ooh*_*aba 3 core-data ios restkit
使用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);
Run Code Online (Sandbox Code Playgroud)
使用managedObjectContext在上面的代码中保存没有错误,并且来自同一上下文的任何提取都会正确地返回实体.但是在后续构建中,如果我使用mainQueueManagedObjectContext,则提取将始终返回nil,即使上面的代码在主线程上运行.
有什么我想念的吗?
在使用mainQueueManagedObjectContext创建的上下文中使用save:时,它不会将其更改保留到存储中.根据RKManagedObjectStore(bolding mine)的文档:
托管对象上下文层次结构旨在将主线程与磁盘I/O隔离并避免死锁.由于主上下文管理自己的专用队列,因此保存主队列上下文不会导致将对象保存到持久性存储中.必须保存主要上下文,以便将对象保留到磁盘.
如果要保留更改并仍使用mainQueueManagedObject上下文,请尝试使用
- (BOOL)saveToPersistentStore:(NSError **)error
Run Code Online (Sandbox Code Playgroud)
这将推动上下文层次结构的变化.
有关RKManagedObjectStore的相关文档,请访问http://restkit.org/api/latest/Classes/RKManagedObjectStore.html#//api/name/persistentStoreManagedObjectContext
有关restkit NSManagedObject类别的文档,请访问 http://restkit.org/api/0.20.0-pre3/Categories/NSManagedObjectContext+RKAdditions.html
| 归档时间: |
|
| 查看次数: |
1449 次 |
| 最近记录: |