2011-06-22 32 views
1

我在应用程序中使用核心数据作为本地存储。我已经正确设置了它,并为每个实体创建了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。

+0

JSON的外观如何? NSLog的结果是什么(@“显示:%@”,显示);'? –

+0

我100%确定JSON没问题。 – Magnus

+0

如果添加演员,该怎么办? 'showObject =(Show *)[NSEntityDescription insertNewObjectForEntityForName:@“Show”inManagedObjectContext:managedObjectContext _];' – chris

回答

0

有多少节目?你可以这样做:NSLog(@"Number of shows: %d.", shows.count);,假设演出是NSArray。这可能是因为你的核心数据代码很好,而JSON解析本身就是错误的。

编辑:另外,你是否正确地将更改保存到持久存储?

+0

节目的数量为42.您是否正确地将更改保存到持久存储区中,意味着什么? – Magnus

0

通常,当您看到几个对象中的一个像这样被保存时,问题是应该是多对象的关系被错误地设置为一对一。无论您尝试添加到关系中的对象有多少,都只设置最后一个对象,因为关系只能保存一个值。

我认为在这种情况下,问题很可能在自定义子类的代码中,而不是数据模型本身,因为数据模型使用泛型NSManagedObjects。

相关问题