objective-c - 奇怪的 XCode 4.2 和核心数据行为

标签 objective-c ios xcode core-data nsmanagedobject

所以我最近升级到 XCode 4.2,部分原因是我需要 IOS 5 SDK。

无论如何,当我编译并尝试运行我的应用程序时,我发现它不再运行。这是因为 Core Data 实体中的属性现在以某种方式标记为只读。

我没有这样做,除了错误消息之外,我找不到任何证据。

在我的核心数据托管对象中,称为注:

@interface Note : NSManagedObject
@property (nonatomic, retain) NSString * title;
...


@implementation Note
@dynamic title;
...

后来 - 和其他地方 - 在代码中,我尝试这样做:
self.note.title=self.noteTitle.text;

当执行到达这一行时,我收到以下错误:
Property 'title' is marked readonly on class 'Note'.  Cannot generate a setter method for it.
-[Note setTitle:]: unrecognized selector sent to instance 0x80ae3d0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Note setTitle:]: unrecognized selector sent to instance 0x80ae3d0'

什么????我可以手动编码 setter - 错误说它无法为我生成一个 - 但我真的很想了解这里发生了什么。

我确实为这个实体重新生成了托管对象文件,但它不起作用。我也创建了一个新的数据模型,并检查以确保没有设置不应该设置的内容。

编辑:我遗漏了一个重要的花絮:我在 Note (托管对象)上定义了一个类别。在类别中,我为对象添加了一个协议(protocol)(MKAnnotation)。我的类别是这样定义的:
@interface Note (Extras) <MKAnnotation>

我已经删除了协议(protocol)的“需要”,但没有删除引用。当我这样做时,一切都回到了应有的状态。

因此,当我解决了我的问题时,我想知道:将协议(protocol)添加到托管对象是不好的行为吗?

谢谢。

最佳答案

MKAnnotation协议(protocol)有一个只读的 title属性(property):

@property (nonatomic, readonly, copy) NSString *title

..这与您的同名动态属性冲突。

(来源:Apple, MKAnnotation Protocol Reference)

关于objective-c - 奇怪的 XCode 4.2 和核心数据行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7793161/

相关文章:

ios - 当调用 didFinishNavigation 时,WKWebView 没有完成加载 - WKWebView 中的 Bug?

iphone - Localized.strings 已损坏?

ios - Storyboard未在 Xcode 11 中删除

iOS:在模态之后在 UIViewController 上运行后台任务是否安全?

objective-c - UIButton UIPopUpController 以编程方式

ios - 属性数组不添加对象,临时数组会。

ios - Storyboard 中自定义类集的本地化不起作用

Mono 中的 Objective-C

ios - 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素

ios - 如何在 swift 接收推送通知时调用服务器?