對於一些概念上的閱讀,您可能需要閱讀文件關於Efficiently Importing Data,尤其是「查找,或創建」。 See a previous similar question.
獲取JSON並將其保存爲本地Core Data是非常合理的。它是如何我做的是在兩個階段:
- 轉換JSON天然可可數據類型(的NSDictionary和NSArray的)
- 轉換NS *爲核心數據對象
兩個很好的框架,以JSON之間的轉換和NS *是json-framework和TouchJSON。以下示例基於json-framework。
假設您從JSON獲取一些對象的數組。然後,您會怎麼做:
NSArray *objects = [jsonStringYouGotFromServer JSONValue];
for (NSDictionary *_object in objects) {
CDObjectType *cdObject = [self cdObjectFromDictionary:_object];
// cdObject is now a full-featured Core Data object
}
的cdObjectFromDictionary可能是這樣的:
- (CDObjectType *) cdObjectFromDictionary:(NSDictionary *)dict {
CDObjectType *object = [NSEntityDescription
insertNewObjectForEntityForName:@"Object"
inManagedObjectContext:moc];
NSDictionary *attributes = [[NSEntityDescription
entityForName:@"Object"
inManagedObjectContext:moc] attributesByName];
for (NSString *attr in attributes) {
[object setValue:[dict valueForKey:attr] forKey:attr];
}
return object;
}
以上假設,在你的JSON和核心數據模型的屬性名相同,並且該數據類型匹配(即JSON數字是核心數據NSNumbers等)。即使模型改變,上面的代碼也能很好地工作。
上述代碼不考慮如何測試對象是否已經存在於本地,但您可以想象如何添加該對象。您的模型中必須具有某種形式的對象ID,並且您可以在添加它之前查看該對象是否存在於本地,或者是否需要更新現有對象。