Xcode无法生成正确的coredata模型文件

时间:2017-01-11 11:37:17

标签: ios objective-c xcode core-data

使用编辑器更改模型文件后生成核心数据模型 - >创建NSManagedObj ...

我将实体关系更改为其他实体(如果这很重要)

我清理了我的项目和构建文件夹。

但生成的文件似乎不正确,它们包含的文件包括' Entity.h' 哪个不存在......因为我看到的唯一类文件是' Entity + CoreDataClass.h'

所以我手动将名称更改为以上所有错误,然后我收到链接器错误:

duplicate symbol _OBJC_CLASS_$_Userinfo in:
    /Users/Me/Library/Developer/Xcode/DerivedData/test-fxdxcviituhcmoegqygwirddhuir/Build/Intermediates/test.build/Debug-iphonesimulator/test.build/Objects-normal/x86_64/Userinfo+CoreDataClass.o
duplicate symbol _OBJC_METACLASS_$_Userinfo in:
    /Users/Me/Library/Developer/Xcode/DerivedData/test-fxdxcviituhcmoegqygwirddhuir/Build/Intermediates/test/Debug-iphonesimulator/test/Objects-normal/x86_64/Userinfo+CoreDataClass.o
ld: 2 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

最初我使用较旧版本的Xcode创建了该项目,其中实体文件如' Entity.h"生成了......更新后这是Xcode的某种错误吗?

我的实体正在使用'手册/无' codegen选项。但是我注意到在构建之后,具有上述链接器错误的实体会自动更改为“类定义”'?

编辑: 好的,所以将codegen设置为所有实体的类定义会停止错误的文件导入错误。 (但之后仍然会恢复到' manual / none'之后。除了我新创建的实体。 如果+ CoreDataClass.m文件的derriveddata中存在错误,则导入名称中不包含+ CoreDataClass。 我的项目中的My + CoreDataClass.m文件不包含此错误,并且对于+ CoreDataClass是正确的。

我的项目生成文件:

#import "Userinfo+CoreDataClass.h"
#import "User+CoreDataClass.h"
@implementation Userinfo

@end

错误存在的地方:(在衍生来源中)

#import "Userinfo+CoreDataClass.h"
#import "User.h"
@implementation Userinfo

@end

2 个答案:

答案 0 :(得分:0)

尝试点击项目。然后单击"显示版本编辑器" (图片右上角的按钮)按钮,尝试查找重复的引用并将其删除。 enter image description here

应该解决问题

答案 1 :(得分:0)

我认为我在选择您的实体后在您的xcddatamodel文件中找到了答案。在右侧面板上,您将看到“代码生成”下拉列表。它可能默认为Swift,将其更改为Objective c并构建项目。您的文件将生成。