NSPredicate を使用して Core Data エントリのエントリを編集しようとしていますが、その仕組みがよくわかりません。
別のオブジェクトの ID に基づいてエンティティを取得しようとしていますが、どこが間違っているのかわかりません。有効なデータ モデルは次のとおりです。エンティティ: myEntity、属性: 名前、ID、値。
これを介してデータベース内の正しいオブジェクトを取得しようとしています:
NSEntityDescription *entity = [NSEntityDescription entityForName:@"myEntity" inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %@", self.itemToEdit.ID];
[request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
NSError *error;
MyEntity *myEntity = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex: 0];
myEntity.value = self.itemToEdit.anotherValue;
[self.managedObjectContext save:&error];
何らかの理由で、データが保存されておらず、アプリもクラッシュしていないため、問題は述語にあると思われます。とにかく、コードの何が問題になっていますか?注意として、itemToEdit はタイプ myEntity ではなく、別のオブジェクトですが、割り当てタイプは同じです。
よろしく、
マイク