Core Data スキーマを JSON を提供するリモート API と同期する最良の方法は何ですか? 現時点では、API ID が存在するかどうかを確認するために Core Data をチェックする JSON 応答の各辞書をループしています。
これはうまく機能しますが、サーバー上にないローカル オブジェクトを削除するだけです。これが私の JSON データの例です。
[
{
"id":1234,
"name":"My first object",
"description":"This is a long string with lots of information"
},
{
"id":1235,
"name":"My second object",
"description":"This is a long string with lots of information"
}
]
現在、これを達成することを考えることができる唯一の方法は、次のようなものです。
NSArray *jsonData = // Convert json data to array using NSJSONSerialization
NSInteger fetchedCount = _fetchedResultsController.fetchedObjects.count;
if (fetchedCount != jsonData.count) {
for (int i = 0; i < fetchedCount; i++) {
NSManagedObject *object = [_fetchedResultsController objectAtIndexPath: [NSIndexPath indexPathForItem:i
inSection:0]];
NSNumber *idNumber = object.apiID;
BOOL shouldDelete = YES;
for (NSDictionary *jsonDict in jsonData) {
if ([jsonDict objectForKey:@"id"] == idNumber) {
shouldDelete = NO;
}
}
if (shouldDelete) {
// Delete object.
}
}
}
JSON配列に多くのオブジェクトが含まれていると、非常に非効率になると思います。