Ada*_*dam 30 cocoa core-data cocoa-bindings nsmanagedobject
(自我询问和自我回答,因为我花了几个小时在网上寻找这个,大多数资源都说"我最终解决了它"而没有给出解释)
我有一个非常简单的Core Data + Bindings应用程序:
上面的第3项导致应用程序崩溃,错误如下:
[(my NSManagedObject) copyWithZone:]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)
实现该方法(!)并在那里放置一个断点,我发现它是由Apple的NSCell类调用的 - 这没有多大帮助:(.
Ada*_*dam 25
事实证明以上所有都需要触发这一点,并且XCode允许你在99.9%的情况下做一些错误的事情,如果不是100%的话.
Core-Data对象无法实现copyWithZone: - 这会导致崩溃
使用Bindings填充tableview时,它会尝试复制NSArrayController中对象的值以呈现每个列
...但是如果你没有完全指定Column绑定(Xcode允许你一半指定它),那么tableview会尝试对象的"复制" 而不是它们的值
我的绑定中的错误:我已经指定表列具有"值":
Controller Key ="arrangeObjects"模型键路径=(空白)
(这是XCode4自动完成中的一个错误 - 当你过快地删除时,它会删除ModelKeyPath字段)
完成输入绑定,例如:
模型关键路径="值"
......一切都有效.
小智 8
我也想在这里发帖,因为我遇到了类似问题
空定义的对象:
错误的代码:
@property (nonatomic, copy, readwrite) MSender * sender;
Run Code Online (Sandbox Code Playgroud)
这应该抛出一个编译错误,因为引用计数Xcode不知道如何复制我的对象.相反,它在运行时失败了......
编写代码:
@property (nonatomic, strong, readwrite) MSender * sender;
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人.
小智 6
谢谢你的解决方案,它指出了我正确的方向.对于那些学习InterfaceBuilder的人,我希望这些额外的信息有所帮助.
事实证明,在构建教程的过程中,我无意中将一个教程绑定Text field Cell - Text Cell到了我的教程ArrayController.ObjectValue.
真正的约束应该发生在
Table Column > Table Cell View > Static Text - Table View Cell
那一个是正确的,但在视觉上在它下面的树(因为我不明白的原因,IB需要一个Text Field Cell.)我也绑定了:
Table Column > Text Field Cell - Text Cell
这是第二个绑定试图复制整个对象,因为路径objectValue没有键,它触发了这个错误.
可能是一个新手的错误,但它意味着通过每一个物体行走和检查绑定,我碰到这个来了一个.