2011-06-22 65 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。

相關問題