Jon*_*rft 2 cocoa cocoa-touch core-data objective-c nsmanagedobject
调用以下方法以便从我的应用服务器获取信息Core-Data之后填充AFNetworking.
这些信息似乎完全正常,因为当表格更新时,我可以看到新的信息正在更新中UITableView.
现在我遇到的问题是,即使我可以看到信息(从服务器取出后,存储到Core-data中并重新显示在我的内容中UITableView)如果我然后关闭我的应用并重新打开它,信息不再存在了.
似乎信息不是持久的,问题似乎是线程.鉴于如果我删除我的方法中的线程选项一切正常.
我错过了什么?我尝试了大多数我遇到的事情,但似乎无法找到解决方案.
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc]
initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = managedObjectContext;
myModel.context = childContext;
[childContext performBlock:^{
// ... Lots Controller logic code that then calls the class myModel where all my Core-Data save methods are
// Sort Wall Pictures
if ( [dataHolder[@"verb"] isEqualToString:@"addWallPicture"] ) {
data = @{ @"resourceID":dataHolder[@"_id"][@"$id"],
@"resourceName":dataHolder[@"details"][@"resourceName"],
@"author":@{ @"id":dataHolder[@"userId"][@"$id"],
@"username":dataHolder[@"details"][@"authorName"] },
@"likesNumber":@0,
@"likesPeople":@[]
};
[myModel saveSocialWall:data date:date verb:dataHolder[@"verb"] code:dataHolder[@"_id"][@"$id"] myUser:myUser];
continue;
}
[childContext save:&error];
}];
Run Code Online (Sandbox Code Playgroud)
Mar*_*n R 12
您必须在某些时候保存主要上下文,例如在保存子上下文之后.
保存子上下文仅保存到主上下文,并将主上下文保存到存储文件中.
像这样(写在手机上,会有语法错误):
// ...
[childContext save:&error];
[mainContext performBlock:^{
[mainContext save:&error];
}];
Run Code Online (Sandbox Code Playgroud)
在Swift 2.0中,它将是:
do {
try childContext.save()
mainContext.performBlock {
do {
try mainContext.save()
} catch let err as NSError {
print("Could not save main context: \(err.localizedDescription)")
}
}
} catch let err as NSError {
print("Could not save private context: \(err.localizedDescription)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |