繁体   English   中英

核心数据:从Rest API同步数据

[英]Core Data: Sync data from Rest API

我从Rest API请求数据,然后将它们与核心数据一起保存到数据库中。

第一个API结果

  1. 一种
  2. C

第二个API结果

  1. 一种
  2. C

我们应该删除“ B”,因为它已从API结果中消失了。 当前,我们在添加新数据之前先删除表中的所有数据,但这看起来并不正确。

我的问题是如何在CPU开销最小的情况下检测已删除的数据并在数据库中删除它们?

我可以选择核心数据存储类型memorysqlite ),并且不能使用NSBashRequest

在必须执行此操作时,我通过获取未包含在新传入数据集中的所有内容,并删除了获取结果中的所有内容来做到这一点。 仅当您具有某种唯一ID时,这才有效-如果您的ABC是没有重复的唯一ID。

该代码将类似于

  1. 首先获取在新的传入数据中找到的所有唯一ID。 如果传入对象位于名为restResults的数组中,则将类似于

     NSArray *incomingUniqueIDs = [restResults valueForKey:@"uniqueID"]; 
  2. 使用谓词执行获取请求,该谓词查找具有唯一ID 且不在新列表中的所有内容。 就像是

     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"uniqueID not in %@", incomingUniqueIDs]; 

然后执行获取并删除找到的所有内容。 在您的情况下,第二次incomingUniqueIDs将包含AC 谓词仅获取B 您将删除该条目,然后就可以完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM