将RestKit与ios 5核心数据并发一起使用时崩溃
我还不熟悉核心数据RestKit 由于存在一些性能问题,我想在ios5中使用并发技术。然而,当它与RestKit结合时,出现了崩溃问题。这是我的崩溃代码:将RestKit与ios 5核心数据并发一起使用时崩溃,ios,core-data,restkit,Ios,Core Data,Restkit,我还不熟悉核心数据RestKit 由于存在一些性能问题,我想在ios5中使用并发技术。然而,当它与RestKit结合时,出现了崩溃问题。这是我的崩溃代码: [[RKObjectManager sharedManager] getObjectsAtPath: HOT_PATH parameters: params success: ^(
[[RKObjectManager sharedManager] getObjectsAtPath: HOT_PATH
parameters: params
success:
^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSManagedObjectContext *newContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
newContext.parentContext = [self managedContext];
[newContext performBlock:^{
Rumor *rumorInOtherContext = (Rumor *)[mappingResult.array lastObject];;
Rumor *rumor = (Rumor *)[newContext objectWithID:rumorInOtherContext.objectID];
rumor.updateDate = [NSDate date]; // <- crash at this point.
}];
[[RKObjectManager sharedManager]getObjectsAtPath:热路径
参数:params
成功:
^(RKObjectRequestOperation*操作,RKMappingResult*映射结果){
NSManagedObjectContext*newContext=[[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
newContext.parentContext=[self-managedContext];
[newContext performBlock:^{
Rumor*rumorInOtherContext=(Rumor*)[mappingResult.array lastObject];;
Rumor*Rumor=(Rumor*)[newContext objectWithID:rumorInOtherContext.objectID];
rumor.updateDate=[NSDate];//
您使用的iOS目标版本是什么
您正在使用RK的哪个版本
如果您的目标是5.x,则不能对核心数据或父子上下文使用基于块的并发编程代码。(是的,它们在5.x中被合并到iOS中,但在6.x之前,它不起作用且不安全)
你可能想调查一下
我对RK有很多问题,并决定离开RK,如本问题所述:
stacktrace是什么(如果您在设备上遇到这种情况,将有一个崩溃日志,您可以从窗口->管理器->设备访问)告诉你什么时候崩溃?这是我代码的简化版本,以后的方法将成为一个性能问题,将消除UX。我现在改为iOS 6.1,但它不起作用。RK版本是0.20.0pre4。stacktrace显示崩溃点是rumor.updateDate=[NSDate日期]
。你确定吗[self-managedContext]已设置(且不是打字错误)?请注销“rumor”变量,并确保确实从新上下文中获取了一个rumor对象。我非常确定。以下是日志:`2013-03-05 10:16:23.321 Rumorsay[39050:c07]parentContext=2013-03-05 10:16:23.321 Rumorsay[39050:4903]Rumorsay=(实体:rumor;id:0x7AEDD10;数据:)`
[[RKObjectManager sharedManager] getObjectsAtPath: HOT_PATH
parameters: params
success:
^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
Rumor *rumor = (Rumor *)[mappingResult.array lastObject];;
rumor.updateDate = [NSDate date]; // <- save!
}];