【问题标题】:manageObjectContext throwing unrecognized selector errors?manageObjectContext 抛出无法识别的选择器错误?
【发布时间】: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] 会发生类似错误。这可能是什么原因造成的?

【问题讨论】:

    标签: objective-c cocoa core-data


    【解决方案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 错误(谈论重叠视图)。
    • 这确实很奇怪。您最近是否对数据模型进行了更改?彻底清理构建目录并重新构建应用程序如何?
    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多