ios - 对象没有保存到 SQL Lite 中,即使它说它已保存 [RestKit ManagedObjectContext]

标签 ios core-data restkit nsmanagedobjectcontext

所以我遇到了一个非常令人沮丧的问题......我正在使用 Restkit 从我的 Django 服务器获取对象并且映射成功完成。那也行!现在,我试图从我的 SQLLite 数据库中获取该对象并更改该对象并将其保存回来。例如:

    _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) 错误:(空) | (空) | (空)

现在,如果我关闭我的应用程序并重新打开它(或者甚至自己去检查 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);

有什么想法吗?!

谢谢!

最佳答案

需要调用managedObjectStore的savePersistentStore方法:[managedObjectStore.mainQueueManagedObjectContext save:&error]; [managedObjectStore.mainQueueManagedObjectContext saveToPersistentStore:&error];

关于ios - 对象没有保存到 SQL Lite 中,即使它说它已保存 [RestKit ManagedObjectContext],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633640/

相关文章:

ios - 显示/隐藏 UISplitViewController 的主视图 Controller 移动详细 View

iphone - 登录到主应用程序

iphone - 在 appdelegate 加载我的 mainWindow.xib 之前设置 coredata

ios - 删除表格 View 中的一行而不删除核心数据实体

ios - 发布路径必须与 RKResponseDescriptor pathPattern 完全匹配

ios - Swift Firebase Storage.storage().reference(forURL : ) not working

ios - parse.com 存储特定值一次

ios - NSManagedObject 的编译器警告

objective-c - 使用 Restkit RKParams 发送 JSON 请求

ios - RestKit:postObject 调用了什么委托(delegate)方法?