3

だから私は非常にイライラする問題を抱えています...Restkitを使用してDjangoサーバーからオブジェクトを取得していますが、マッピングは正常に行われています。それは結構です!現在、SQLLite DB からそのオブジェクトを取得し、そのオブジェクトを変更して保存しようとしています。例えば:

    _managedObjectContext = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;


    NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"User"];
    fetchRequest.predicate = [NSPredicate predicateWithFormat: @"identifier == 3"];
    NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"identifier" ascending:NO];
    fetchRequest.sortDescriptors = @[descriptor];
    NSError *error = nil;

    NSFetchedResultsController *fetchedResultsController2 = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                                                        managedObjectContext:_managedObjectContext
                                                                          sectionNameKeyPath:nil
                                                                                   cacheName:nil];
    BOOL fetchSuccessful = [fetchedResultsController2 performFetch:&error];
    if (! fetchSuccessful) {
        NSLog(@"%@", error.description);
    }

    PokaUser* user = [[fetchedResultsController2 fetchedObjects]objectAtIndex:0];
    user.firstName = @"NewFirstName";
    BOOL hasSaved = [user.managedObjectContext save:&error];
    NSLog(@"INFO:{%s} CoreData has Saved: %@ (%d)\nerror:%@ | %@ | %@", __FUNCTION__, (hasSaved) ? @"YES" : @"NO", hasSaved, error, [error userInfo],[error localizedDescription]);

次のログを取得します。

CoreData が保存されました: はい (1) エラー:(null) | (ヌル) | (ヌル)

ここで、アプリを閉じて再度開いた場合 (または自分で Sqllite.db を確認した場合)、変更は保存されませんでした。私は最初のファーストネームを取得し続けます。

ManagedObjectContext の作成方法は次のとおりです。

[managedObjectStore createPersistentStoreCoordinator];
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"Maindb.sqlite"];

NSString *seedPath = [[NSBundle mainBundle] pathForResource:@"Maindb" ofType:@"sqlite"];
NSError *error;
NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:seedPath withConfiguration:nil options:nil error:&error];
NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error);

何か案は?!

ありがとう!

4

1 に答える 1

6

管理対象オブジェクトストアのsavePersistentStoreメソッドを呼び出す必要があります。[managedObjectStore.mainQueueManagedObjectContextsave:&error]; [managedObjectStore.mainQueueManagedObjectContext saveToPersistentStore:&error];

于 2013-03-14T01:11:56.747 に答える