0

我有这段代码,我试图获取某个键的所有记录:

//  if the apptObject.aApptKey is nil, skip it...
if(apptObject.aApptKey == nil)
    continue;  //  go to beginning and try again 

    //  using apptObject.aApptKey, get the client's name
NSPredicate *predicate =  ([NSPredicate predicateWithFormat:@"(aClientKey = %@)", apptObject.aApptKey]);
    clientInfo = [ClientInfo MR_findAllWithPredicate: predicate];

问题是我收到此错误(由 Crashlytics 提供):

致命异常:NSInvalidArgumentException +entityForName:nil 不是搜索实体名称“ClientInfo”的合法 NSManagedObjectContext 参数

要么不明白错误消息告诉我什么,要么我不明白如果我在 MR_findAll 之前测试 nil 会发生什么。请注意,所讨论的“密钥”完全相同,我只是使用约会密钥来获取客户的姓名。

有人可以解释这是怎么发生的吗?

4

1 回答 1

0

(来自我的评论:)错误消息与谓词无关。它告诉你NSManagedObjectContextis nil

一个可能的问题可能MR_contextForCurrentThread是已弃用且不应再使用的方法。原因是它为每个托管对象上下文假定一个唯一的线程。这不再适用于在 GCD队列上运行的新 MOC 并发类型。比较https://stackoverflow.com/a/20536335/1187415

更好地使用MR_defaultContext或将上下文从一个视图控制器传递到下一个视图控制器。

于 2014-03-10T13:31:04.640 回答