2 つの属性「uid」、「description」を持つ「ItemModel」と呼ばれる 90 個の CoreData エンティティがあり、各項目は NSManagedObject として挿入されます。
NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName: @"ItemModel" inManagedObjectContext: AFYDelegate.managedObjectContext];
最初のサーバー呼び出しは、キー「uid」に対して上記で取得した 90 個のアイテムのそれぞれに「uid」を割り当てます。コンテキストはここには保存されません。
後の 2 回目のサーバー呼び出しで、indexPath を使用して NSManagedObjectごとに90 項目の「説明」を更新するのが好きです。各オブジェクトを取得して次のメソッドに渡し、コンテキストを保存します。
[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 の更新では正常に機能しますが、シミュレーターを閉じてコードを再度実行した後、同じ「uid」と「description」を持つアイテムごとに 2 つの重複があります。これは、現在 180 個のアイテムがあることを意味します。コードを繰り返し閉じて実行すると、ますます多くのアイテムが作成されます。
updateItemToDataModel メソッドを削除して、シミュレーターをリセットしてみましたが、90 個のアイテムで正常に動作します。
誰かが助けてくれれば、CoreData は初めてです。既存のアイテムのみを更新したい場合、コードの何が問題になっていますか?