manageObjectContext 抛出无法识别的选择器错误?

Posted

技术标签:

【中文标题】manageObjectContext 抛出无法识别的选择器错误?【英文标题】:manageObjectContext throwing unrecognized selector errors? 【发布时间】:2011-07-16 03:36:14 【问题描述】:

我的应用程序是典型的非基于文档的核心数据应用程序。我没有修改任何预先提供的项目代码,并且一直在使用 Xcode 默认提供的 AppDelegate 文件(项目不够大,无法保证更多)。

现在,当我尝试将项目添加到我的核心数据存储之一时

NSManagedObject *colorItemObject = [NSEntityDescription insertNewObjectForEntityForName:@"ColorItem" inManagedObjectContext: [NSApp managedObjectContext]];
    [colorItemObject setValue:[colorSetsArrayController valueForKeyPath:@"selection.colorSetName"] forKey:@"parent"];

它抛出一个无法识别的选择器异常:

-[_NSStateMarker managedObjectContext]: unrecognized selector sent to instance 0x100118290

使用 [self managedObjectContext] 会发生类似错误。这可能是什么原因造成的?

【问题讨论】:

【参考方案1】:

我很确定

 [NSApp managedObjectContext]

没有返回有效的managedObjectContext。您是否使用名为managedObjectContext 的方法为NSApplication 创建了一个类别?如果没有,请将其更改为

[self managedObjectContext]

它应该可以工作。 (我假设您的代码在您的应用委托中。)

【讨论】:

感谢您的回复,但我也尝试过 [[NSApp delegate] managedObjectContext] 和 [self manageObjectContext]。它们都可以正常编译而没有任何警告,但会在运行时抛出错误 [self managedObjectContext] 和上面一样 - 即 - [_NSStateMarker managedObjectContext]: unrecognized selector sent to instance 0x100118290. [[NSApp delegate] managedObjectContext] 也是如此。 你能展示一下-managedObjectContext的实现吗?你在做retain/release 正确吗?如果你从 Xcode 菜单栏运行analyze(它在build 菜单项下方)它会说什么? 实现甚至不是我的,它只是每个 Core Data 项目中包含的标准代码。这让我感到困惑,因为它在其他项目中运行良好。分析显示没有超出规范的内容,有几个虚假的 IB 错误(谈论重叠视图)。 这确实很奇怪。您最近是否对数据模型进行了更改?彻底清理构建目录并重新构建应用程序如何?

以上是关于manageObjectContext 抛出无法识别的选择器错误?的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 子类抛出一个无法识别的选择器发送到实例

UITableViewCell 中的 UITextField 抛出 -[UITextInputTraits length]:无法识别的选择器发送到实例

在目标上调用 xxx 时抛出无法识别的发送到实例的选择器

“AppDelegate”类型的值没有成员“manageObjectContext”

我不断收到 [RCTCxxBridge jsContextRef] 发送到实例 0x7f8af262f4f0 的无法识别的选择器是从 JS 线程抛出的

无法识别的分组构造