0

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 ではなく、別のオブジェクトですが、割り当てタイプは同じです。

よろしく、
マイク

4

1 に答える 1

0

事件は解決しました。私の愚かな間違い。私は Core Data のこの新しい部分を機能させることに集中していたので (これは大変なことだと思います)、実際には self.itemToEdit.value を割り当てるのを忘れていました。お時間を無駄にして申し訳ありません。

マイク

于 2012-11-30T16:01:16.707 に答える