[英]Core Data: Sync data from Rest API
我从Rest API请求数据,然后将它们与核心数据一起保存到数据库中。
第一个API结果
- 一种
- 乙
- C
第二个API结果
- 一种
- C
我们应该删除“ B”,因为它已从API结果中消失了。 当前,我们在添加新数据之前先删除表中的所有数据,但这看起来并不正确。
我的问题是如何在CPU开销最小的情况下检测已删除的数据并在数据库中删除它们?
我可以选择核心数据存储类型 ( memory和sqlite ),并且不能使用NSBashRequest
在必须执行此操作时,我通过获取未包含在新传入数据集中的所有内容,并删除了获取结果中的所有内容来做到这一点。 仅当您具有某种唯一ID时,这才有效-如果您的A
, B
和C
是没有重复的唯一ID。
该代码将类似于
首先获取在新的传入数据中找到的所有唯一ID。 如果传入对象位于名为restResults
的数组中,则将类似于
NSArray *incomingUniqueIDs = [restResults valueForKey:@"uniqueID"];
使用谓词执行获取请求,该谓词查找具有唯一ID 且不在新列表中的所有内容。 就像是
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"uniqueID not in %@", incomingUniqueIDs];
然后执行获取并删除找到的所有内容。 在您的情况下,第二次incomingUniqueIDs
将包含A
和C
谓词仅获取B
您将删除该条目,然后就可以完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.