Xcode8.x使用CoreData模型出现类被非法重定义的解决办法

这个问题在Xcode7.x中貌似没碰到过。不过在Xcode8.x中,在使用可视界面创建CoreData模型后再使用Editor->Create NSManagedObject Subclass之后有时会发现生成的数据对象类被重复定义的编译错误!

这是因为在Xcode8.0中包含了一个自动生成NSManagedObject的机制,如果你打开该机制则会在project(Derived Data目录中)实际生成的DerivedSources文件夹中出现同名的源代码文件。

有几种解决办法:

首先在你自己手动创建数据类之前,如果觉得满意你可以直接使用Xcode为你自动创建的数据类,省得麻烦!

但本猫是控制狂,所以对于自动创建又看不到摸不着的东东还是抱有略微不爽的赶脚在里面。如果你跟我一样喜欢自己动手,那么你可以选择关闭Xcode的自动生成机制,有两种方式:

1.打开在model file的inspector,选择Tools Version为 Xcode 7.3

Xcode8.x使用CoreData模型出现类被非法重定义的解决办法_第1张图片

2.或者你可以根据不同的entity去分别选择启用还是关闭自动生成机制;选择model file中特定的entity,打开其Data Model Inspector窗口,将其中的Codegen选项设置为Manual/None:
Xcode8.x使用CoreData模型出现类被非法重定义的解决办法_第2张图片

PS:对于Xcode中对model file所做的修改有时往往不能被正确保存,我们需要做以下步骤来确保:

  1. 点击Xcode->File->save菜单
  2. 清空项目文件夹
  3. 重启Xcode查看修改是否真正被应用

你可能感兴趣的:(xcode,数据模型,重定义,coredata)