菜鸟教程小白 发表于 2022-12-13 02:50:06

ios - RestKit:当值无效时如何拒绝整个映射


                                            <p><p>所以我正在尝试支持离线使用我正在制作的使用 REST API 的 iOS 应用程序。到目前为止,这是我所拥有的:</p>

<ul>
<li>使用 REST 接口(interface)运行的服务器来操作我的数据模型。</li>
<li>一个使用 RestKit 检索存储在我的服务器上的数据的 iOS 应用程序。</li>
<li>RestKit 在 Core Data 中本地存储服务器响应。</li>
</ul>

<p>当服务器不可用时,我仍然希望用户能够更新数据模型,然后当服务器再次可用时,我希望将这些更新推送到服务器。 </p>

<p>我遇到的问题是,当从服务器接收到已在本地更新(但尚未推送到服务器)的值时,它会被服务器响应的内容覆盖。为了防止这种情况,如果新的“updatedAt”日期早于当前的“updatedAt”日期,我会尝试取消保存到本地存储。 </p>

<p>这是我当前的验证函数:</p>

<pre><code>- (BOOL)validateUpdatedAt:(id *)ioValue error:(NSError **)outError
{
    if(self.updatedAt &amp;&amp; == NSOrderedDescending) {

      *outError = ;

      return NO;
    }
    return YES;
}
</code></pre>

<p>这可行,但只能防止更改此单个值。如果这个字段无效,我希望取消该对象的整个更新。我该怎么做?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>RestKit 提供的支持是设置 <a href="http://restkit.org/api/latest/Classes/RKEntityMapping.html#//api/name/discardsInvalidObjectsOnInsert" rel="noreferrer noopener nofollow">discardsInvalidObjectsOnInsert</a>验证失败时丢弃整个对象。但是,这对您不起作用,因为它仅适用于正在插入的 <code>NSManagedObject</code> 实例,因为它使用 <code>validateForInsert:</code>。</p>

<p>您可以查看使用 <code>validateForUpdate:</code> 执行类似的检查,然后恢复更改,但 RestKit 并没有真正为您提供任何关于您的案例中止的内容。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - RestKit:当值无效时如何拒绝整个映射,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26535763/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26535763/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - RestKit:当值无效时如何拒绝整个映射