Ios 保存到RKSManagedObjectStore的实体';s mainQueueManagedObjectContext在下一次生成时消失

Ios 保存到RKSManagedObjectStore的实体';s mainQueueManagedObjectContext在下一次生成时消失,ios,core-data,restkit,Ios,Core Data,Restkit,使用RestKit v0.20.0-rc1,我成功地创建了CoreData映射,并从捆绑的JSON文件导入了对象,并将数据保存到多个构建中。但是,当我创建自己的实体并保存它时,如果我使用[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext,则该实体在下一次生成时会立即消失,但如果我使用[RKManagedObjectStore defaultStore].persistentStoreManagedObjectCont

使用RestKit v0.20.0-rc1,我成功地创建了CoreData映射,并从捆绑的JSON文件导入了对象,并将数据保存到多个构建中。但是,当我创建自己的实体并保存它时,如果我使用[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext,则该实体在下一次生成时会立即消失,但如果我使用[RKManagedObjectStore defaultStore].persistentStoreManagedObjectContext,则该实体会正确保持

    UserAccount *userAccount = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext];
    userAccount.userID = @(userID);
    [userAccount addContactMethodsObject:phone];
    NSError *error = nil;
    if(![managedObjectContext save:&error])
        NSLog(@"%@", error);
使用任一managedObjectContext都可以在上述代码中无错误地保存,并且从同一上下文进行的任何回迁都会正确地返回实体。但在后续构建中,如果使用mainQueueManagedObjectContext,则fetchs将始终返回nil,即使上面的代码是在主线程上运行的


我有什么遗漏吗

在使用mainQueueManagedObjectContext创建的上下文上使用save:。根据RKSManagedObjectStore(bolding矿山)的文件:

托管对象上下文层次结构旨在隔离主对象 从磁盘I/O执行线程并避免死锁。因为主上下文 管理自己的专用队列,保存主队列上下文不会 结果将对象保存到永久存储区。小学 要将对象持久化到磁盘,还必须保存上下文。

如果要保留更改并仍然使用mainQueueManagedObject上下文,请尝试使用

- (BOOL)saveToPersistentStore:(NSError **)error
这将把更改提升到上下文层次结构中

有关RKSManagedObjectStore的相关文档,请访问

restkit的NSManagedObject类别的文档可在以下位置找到:

谢谢!这对我帮助很大。我花了6个多小时试图弄明白这一点。