Core Data返回NSManagedObject而不是Concrete类,但仅在使用时返回.访问

rus*_*elf 6 iphone core-data objective-c

我已经建立了一个Core Data模型,我有两个对象,比如Person和Address.一个人有一个地址,一个地址可以属于很多人.我已经在核心数据中对其进行了建模(因此双箭头指向Person,而单箭头指向Address)

然后我为这些对象创建了两个类,并在这些类中实现了一些自定义方法.在核心数据模型中,我已将类的名称输入其中.

如果我直接从核心数据中获取地址,它会给我实际的具体类,我可以在其上调用我的自定义方法.

另一方面,如果我获取一个Person并尝试通过Person访问地址(例如:person.address)我得到一个NSManagedObject这是一个地址(例如:我可以获得我设置的所有核心数据属性)它)但它不响应我的自定义方法,因为它的类型为NSManagedObject而不是Address.这是Core Data的限制还是我做错了什么?如果是限制,有什么工作吗?

Lio*_*Lio 9

您是否使用建模器创建了这些类(选择实体,文件>新文件..,托管对象类,然后选择模型实体)?

前一段时间我遇到了类似的问题,因为我没有使用Modeller创建我的托管对象模型.我所做的是确保一切正常运行是复制并保存我的自定义方法(以及我实现的所有其他方法)并使用建模器从头开始.然后我能够再次自定义我的模型类,一切正常.

我知道这不是一个完整的答案,但也许它可以帮助你,直到有人解释到底发生了什么.

干杯!


Ter*_*rie 6

您可能只是忘记在创建实体时在模型中设置类的名称 - 它默认为NSManagedObject.单击建模器中的Person和Address,并在最右侧列出实体属性,检查Class字段是否正确填充了相应目标C类的名称,而不仅仅是默认的NSManagedObject设置.