我是Core Data的新手,也是RestKit。
由于存在一些性能问题,我想在ios5中使用并发技术。然而,当它与RestKit结合时,出现了崩溃问题。这是我的崩溃代码:
[[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: HOT_PATH
parameters: params
success:
^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
Rumor *rumor = (Rumor *)[mappingResult.array lastObject];;
rumor.updateDate = [NSDate date]; // <- save!
}];
控制台对话框中没有出现崩溃报告。 :(
我的代码是否正确?或者,有没有其他方法来做同样的事情?
答案 0 :(得分:1)
如果您的目标是5.x,则不能将基于块的并发编程代码用于Core Data或Parent-Child Contexts。 (是的,他们在5.x中被整合到iOS中,但它不起作用,直到6.x才不安全)
您可能需要查看GCD。
我与RK有很多问题,并决定放弃它,就像在这个问题中所讨论的那样:
RestKit and saving to CoreData as NSManagedObject
什么是堆栈跟踪(如果您在设备上遇到此问题,那么您将可以从Window-&gt; Organizer-&gt;设备访问崩溃日志)告诉您何时崩溃???