4

変更したいオブジェクトを取得した後、コアデータオブジェクトを更新する方法がわかりません。

これは私がやろうとしていることです:

1) 述語条件に一致するコア データから最初のオブジェクトを検索します。

NSInteger storeId = 235;  //find object with this id in core data

NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:[self.managedObjectContext persistentStoreCoordinator]];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Store"
                                          inManagedObjectContext:context];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %i",storeId];
[request setPredicate:predicate];

NSArray *results = [context executeFetchRequest:request error:NULL];

2) 一致が見つかった場合は、一致するオブジェクトを更新します (ここで助けが必要です):

if (results != nil && [results count] > 0)
{
    /** Not sure how to get the correct context and modify object **/

    Store *matchingObject = [results objectAtIndex:0];
    [context setValue:[NSNumber numberWithInteger:storeId] forKey:"id"];
}


/** Save the context */
NSError *error = nil;
if (![context save:&error]) {     
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        //abort();
}

あなたが提供できる助けをありがとう...

4

1 に答える 1

2

オブジェクト プロパティを直接変更して保存してみてください。

matchingObject.id = [NSNumber numberWithInteger:storeId];

オブジェクトは最初に でフェッチされたcontextので、 save on を呼び出して変更を保存できるはずですcontext

于 2012-10-30T23:53:40.800 に答える