2011-04-29 165 views
1

我必須更新核心數據中的一些記錄。這是正確的方式嗎?Objective C - 核心數據記錄更新

NSManagedObjectContext *context = [self managedObjectContext]; 
NSMutableArray *poiFromCD=(NSMutableArray *)[self takePoiFromCoreData]; 

for (int i=0; i<[array count]; i++) { 
    for (int j=0; j<[poiFromCD count]; j++) { 
    Poi *poi=(Poi *)[poiFromCD objectAtIndex:j]; 
    if ([[[array objectAtIndex:j]objectForKey:@"poiID"]isEqualToString:poi.poiID]) { 
     Poi *p=[poiFromCD objectAtIndex:j]; 
     p.poiID=[[array objectAtIndex:i]objectForKey:@"poiID"]; 
     p.lastmod=[[array objectAtIndex:i]objectForKey:@"lastmod"]; 
    } else { 
     Poi *p; 
     p=[NSEntityDescription insertNewObjectForEntityForName:@"Poi" inManagedObjectContext:context]; 
     p.poiID=[[array objectAtIndex:i]objectForKey:@"poiID"]; 
     p.lastmod=[[array objectAtIndex:i]objectForKey:@"lastmod"]; 
    } 
} 
} 

NSError *error; 
if (![context save:&error]) { 
NSLog(@"Errore durante il salvataggio: %@", [error localizedDescription]); 
} 

我傳遞一個數組到我的方法,並且我已經在CoreData中的數據並把它放在poiFromCD中。

如果我錯了,請指點我正確的方式! :)

回答

0

不,這不是更新核心數據對象的標準方法。您顯然正在嘗試將核心數據視爲SQL,並且不起作用。

核心數據不是SQL。實體不是表格。對象不是行或記錄。屬性不是列。核心數據是一個對象圖管理系統,它可能會或可能不會持久化對象圖,並且可能會或可能不會在後臺使用SQL來做到這一點。試圖用SQL語言來思考覈心數據會導致你完全誤解核心數據,並導致很多悲傷和浪費時間。

我不能完全知道你在做什麼而不知道你的數據模型是什麼樣的,但你很少必須通過像這樣的對象數組。