下列的Ray Wenderlich 的新教程 http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1我能够获取 JSON 数据并将其存储到核心数据中。不过,我很难理解如何利用核心数据中的关系来做到这一点。
这是我的数据模型:
这是我的 JSON:
{
"results": [
{
"name": "Trivia 1",
"objectId": "1000",
"createdAt": "2012-08-31 18:02:52.249 +0000",
"updatedAt": "2012-08-31 18:02:52.249 +0000",
"questions": [
{
"text": "Question 1"
},
{
"text": "Question 2"
},
{
"text": "Question 3"
}
]
}
]
}
最后,我在这里设置了 ManagedObject 的值:
//Sets values for ManagedObject, also checks type
- (void)setValue:(id)value forKey:(NSString *)key forManagedObject:(NSManagedObject *)managedObject {
NSLog(@"TYPE: %@", [value class]);
//If managedObject key is "createdAt" or "updatedAt" format the date string to an nsdate
if ([key isEqualToString:@"createdAt"] || [key isEqualToString:@"updatedAt"]) {
NSDate *date = [self dateUsingStringFromAPI:value];
//Set date object to managedObject
[managedObject setValue:date forKey:key];
} else if ([value isKindOfClass:[NSArray class]]) { //<---This would be the array for the Relationship
//TODO: If it's a Dictionary/Array add logic here
for(NSDictionary *dict in value){
NSLog(@"QUESTION");
}
} else {
//Set managedObject's key to string
[managedObject setValue:value forKey:key];
}
}
我已经看过了这个问题 https://stackoverflow.com/questions/2362323/json-and-core-data-on-the-iphone但我真的很困惑如何将 Ray Wenderlich 示例中的各个部分连接在一起。任何帮助将不胜感激。
在 for 循环中,您将进行一些特殊的处理,如果您正在处理 QuestionGroup,您将知道该对象上的数组是问题(假设它是唯一的数组),因此您可以为每个问题创建一个新的 Question 对象字典中的条目。这将破坏同步引擎的通用性,但如果需要,您可以执行一些额外的步骤来重新获得它。
else if ([value isKindOfClass:[NSArray class]]) {
if ([[managedObject entity] name] isEqualToString:@"QuestionGroup") {
NSSet *questions = [NSMutableSet set];
for (NSDictionary *question in value) {
// create your question object/record
NSManagedObject *questionManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"Question" inManagedObjectContext:managedObjectContext];
// setup your question object
questionManagedObject.text = [question valueForKey:@"text"];
// store all the created question objects in a set
[questions addObject:questionManagedObject];
}
// assign the set of questions to the relationship on QuestionGroup
[managedObject setValue:questions forKey:@"questions"];
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)