使用具有ios 5核心数据并发性的RestKit时崩溃

时间:2013-03-04 17:25:17

标签: ios core-data restkit

我是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!
}];

控制台对话框中没有出现崩溃报告。 :(

我的代码是否正确?或者,有没有其他方法来做同样的事情?

1 个答案:

答案 0 :(得分:1)

  1. 您使用的iOS目标版本是什么?
  2. 您使用的是哪个版本的RK?
  3. 如果您的目标是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;设备访问崩溃日志)告诉您何时崩溃???