我已90個CoreData實體稱爲「ItemModel」與2點的屬性爲「uid」,「描述」,其中每個項被插入作爲NSManagedObject:不止一次更新NSManagedObject的CoreData保存多個副本?
NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName: @"ItemModel" inManagedObjectContext: AFYDelegate.managedObjectContext];
第一服務器呼叫分配爲「uid」來在上面爲關鍵「uid」提取的90個項目中的每一個。上下文不保存在這裏。
在稍後的第二服務器呼叫,我喜歡使用indexPath更新「描述」爲90項,爲的NSManagedObject的每個 - 通過獲取和每個對象傳遞到下面的方法和保存的上下文:
[self updateItemToDataModel:object withData: description];
....
....
- (void)updateItemToDataModel:(NSManagedObject *) object withData:(NSString *)data
{
[object setValue:data forKey:@"description"];
NSError * error = nil;
if (![self.managedObjectContext save:&error]) {
//Handle any error with the saving of the context
NSLog(@"%@",error.localizedDescription);
}
}
上面的代碼在關閉模擬器並再次運行代碼後更新CoreData BUT時會有相同的'uid'和'description'兩個副本。這意味着我現在有180件商品。反覆關閉並運行代碼會創建越來越多的項目。
我試着刪除updateItemToDataModel方法,重置模擬器,它可以很好地處理90個項目。
我是新來的CoreData,如果有人可以幫忙。我的代碼有什麼問題,如果我只想更新現有的項目?
你如何檢索你的'對象'?你有這個代碼嗎? – Jamie
在UICollectionView和NSFetchedResultsController中通過indexPath檢索對象 - NSIndexPath * indexPath = [[self.collectionView indexPathsForSelectedItems] lastObject]; NSManagedObject * object = [[self fetchedResultsController] objectAtIndexPath:indexPath]; – chongsj