仅存储JSON订阅源的最后一个对象的核心数据
我在应用程序中使用核心数据作为本地存储。我已经正确设置了它,并为每个实体创建了NSManagedObject的子类。但是,当我尝试向我的商店中插入值时,它只会插入我的JSON提要中的最后一个对象。仅存储JSON订阅源的最后一个对象的核心数据
res = [JSONHandler requestJSONResponse:jsonString];
shows = [res valueForKeyPath:@"Show.Name"];
NSUInteger showIndex = 0;
for(NSString *showName in shows){
showObject = [NSEntityDescription insertNewObjectForEntityForName:@"Show" inManagedObjectContext:managedObjectContext_];
showObject.name = showName;
showObject.iD = [[res valueForKeyPath:@"Show.Id"]objectAtIndex:showIndex];
showObject.desc = [[res valueForKeyPath:@"Show.Description"]objectAtIndex:showIndex];
showObject.activityType = [[res valueForKeyPath:@"Show.ActivityType"]objectAtIndex:showIndex];
showIndex++;
}
这只存储我的JSON提要中的最后一个对象。任何想法为什么?
编辑:
res = [JSONHandler requestJSONResponse:jsonString];
shows = [res valueForKeyPath:@"Show.Name"];
NSUInteger index = 0;
for(NSString *showName in shows){
show = [NSEntityDescription insertNewObjectForEntityForName:@"Show" inManagedObjectContext:managedObjectContext_];
[show setValue:showName forKey:@"name"];
[show setValue:[[res valueForKeyPath:@"Show.Id"]objectAtIndex:index] forKey:@"iD"];
[show setValue:[[res valueForKeyPath:@"Show.Description"]objectAtIndex:index] forKey:@"desc"];
[show setValue:[[res valueForKeyPath:@"Show.ActivityType"]objectAtIndex:index] forKey:@"activityType"];
index++;
}
It's基本上是一回事,isn't它:当我这样做,它工作正常?但我想使用NSManagedObject的子类而不是像上面那样做。因为在上面的代码片段中显示的是NSManagedObject * show,而不是它应该显示的内容:Show * show。
有多少节目?你可以这样做:NSLog(@"Number of shows: %d.", shows.count);
,假设演出是NSArray
。这可能是因为你的核心数据代码很好,而JSON解析本身就是错误的。
编辑:另外,你是否正确地将更改保存到持久存储?
节目的数量为42.您是否正确地将更改保存到持久存储区中,意味着什么? – Magnus
通常,当您看到几个对象中的一个像这样被保存时,问题是应该是多对象的关系被错误地设置为一对一。无论您尝试添加到关系中的对象有多少,都只设置最后一个对象,因为关系只能保存一个值。
我认为在这种情况下,问题很可能在自定义子类的代码中,而不是数据模型本身,因为数据模型使用泛型NSManagedObjects。
JSON的外观如何? NSLog的结果是什么(@“显示:%@”,显示);'? –
我100%确定JSON没问题。 – Magnus
如果添加演员,该怎么办? 'showObject =(Show *)[NSEntityDescription insertNewObjectForEntityForName:@“Show”inManagedObjectContext:managedObjectContext _];' – chris