如何为 MR_findFirst 设置 NSManagedObjectContext?

Posted

技术标签:

【中文标题】如何为 MR_findFirst 设置 NSManagedObjectContext?【英文标题】:How to set the NSManagedObjectContext for MR_findFirst? 【发布时间】:2014-01-31 16:54:51 【问题描述】:

我将 MagicalRecord 用于我的 CoreData 存储。我有一条语句在执行此语句时会导致不同用户多次崩溃:

PreferenceData *prefDataFound = [PreferenceData MR_findFirst];

错误是:

+entityForName: nil 不是合法的 NSManagedObjectContext 参数搜索实体名称'PreferenceData'

来自这一系列调用(来自 Crashlytics):

1   libobjc.A.dylib objc_exception_throw + 30
2   CoreData +[NSEntityDescription entityForName:inManagedObjectContext:] + 104
3   SalonBook NSManagedObject+MagicalRecord.m line 91
    +[NSManagedObject(MagicalRecord) MR_entityDescriptionInContext:]
4   SalonBook NSManagedObject+MagicalRequests.m line 19
    +[NSManagedObject(MagicalRequests) MR_createFetchRequestInContext:]
5   SalonBook NSManagedObject+MagicalFinders.m line 79
    +[NSManagedObject(MagicalFinders) MR_findFirstInContext:]
6   SalonBook NSManagedObject+MagicalFinders.m line 86
    +[NSManagedObject(MagicalFinders) MR_findFirst]
7   SalonBook SubViewGrid.m line 37
    -[SubViewGrid drawRect:]

所有这些都向我表明 MR_findFirst 调用没有有效的上下文;除了使用 *MR_findFirstWithPredicate:* (我没有谓词,我只想要第一个也是唯一的记录)之外,我能做些什么来解决这个问题?

【问题讨论】:

这就是我不喜欢 Magical Record 的地方。线程和上下文有很多魔力。 - 如果你有当前上下文,那么你可以调用[PreferenceData MR_findFirstInContext:context] Martin R:请重写您的评论作为答案。我看了看,甚至不知道这种方法。谢谢,我想这会成功的!标清 【参考方案1】:

你可以打电话

PreferenceData *prefDataFound = [PreferenceData MR_findFirstInContext:context];

根据您当前的上下文,而不是依靠 Magical Record 来确定 神奇的当前上下文。

【讨论】:

以上是关于如何为 MR_findFirst 设置 NSManagedObjectContext?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 RecyclerView 设置 onItemClickListener? [复制]

如何为 UITabBarItem 设置自定义标题属性

如何为 QBChat 设置 currentUser()?

如何为 VideoCastControllerActivity 设置图像

如何为所有精灵图像设置动画?

如何为 UITextField 设置 inputDelegate?