实体的损坏(旧)名称 - CoreData

时间:2015-12-06 04:47:31

标签: ios core-data nsmanagedobject magicalrecord xcdatamodel

我遇到以下问题:我有一个名为聊天的模型需要更新为对话(仅适用于助记问题)。尽管我已经在xcdatamodel文件上更改了您的名字,但生成的文件仍然保持聊天。

鉴于此,我决定回去:"好吧,保持原样并再次使用聊天",但是当我尝试对聊天模型进行某些操作时喜欢:

Chat * chat = [Chat MR_findFirstByAttribute:@"cId" withValue:convId];

应用程序崩溃说:

  

***因未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' executeFetchRequest:错误:获取请求必须有实体。'

     

我假设内部错误与相关NSManagedObject的实体名称导致应用程序崩溃。

我尝试删除Chat和Chat + CoreDataProperties文件并生成具有正确名称的新文件(对话),并且我还发现xcdatamodel中存在对聊天名称的引用(我在密钥

下打开了它作为源文件
<entity name="Conversation" representedClassName="Chat" syncable="YES">

当我将其更改为Conversation时,行为再次相同。

任何帮助都很感激解决它

1 个答案:

答案 0 :(得分:0)

MagicalRecord框架假定类名和实体名相同。你可以

  • 通过将对“Chat”的所有引用更改为“Conversation”来使用新的实体名称,这可以通过简单的全局文本替换来完成。

  • 放弃MagicalRecord并使用您自己的Core Data堆栈。然后,您可以使用非标准模型,实体和类名称来尽可能多地调整。

通常,如果您选择使用第三方框架,则必须根据其要求调整您的习惯。这个特殊要求并不明显,但从你的错误中可以明显看出,不一致的实体/类名会导致问题。