Xcode 没有生成正确的 coredata 模型文件
Posted
技术标签:
【中文标题】Xcode 没有生成正确的 coredata 模型文件【英文标题】:Xcode not generating correct coredata model files 【发布时间】:2017-01-11 11:37:16 【问题描述】:我在使用编辑器更改模型文件后生成我的核心数据模型 -> 创建 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 设置为所有实体的类定义会阻止错误的文件导入错误。 (但之后仍然恢复为“手动/无”。除了我新创建的实体。 +CoreDataClass.m 文件的派生数据中存在错误的地方...导入名称中不包含 +CoreDataClass。 我的项目中的 +CoreDataClass.m 文件不包含此错误,并且使用 +CoreDataClass 是正确的。
我的项目生成文件:
#import "Userinfo+CoreDataClass.h"
#import "User+CoreDataClass.h"
@implementation Userinfo
@end
存在错误的地方:(在派生源中)
#import "Userinfo+CoreDataClass.h"
#import "User.h"
@implementation Userinfo
@end
【问题讨论】:
NSManagedObject subclasses duplicate declaration的可能重复 我遇到了一个非常相似的错误。你解决了吗? 如果我没记错的话,你必须更改类的名称并更改 codegen。更改代码生成不会自行更新。 【参考方案1】:尝试点击项目。接下来单击“显示版本编辑器”(图片右上角的按钮)按钮并尝试查找重复的引用并将其删除。
应该解决问题
【讨论】:
感谢您的回复,发布后我找到了这个答案:***.com/a/39394426/2859891。更改名称并将 codegen 设置为“手动/无”,构建,然后再次更改名称似乎可行。但是 Xcode 仍然没有创建正确的导入名称。我必须将“+CoreDataClass”附加到每个导入。但这现在构建没有错误【参考方案2】:我想我在选择实体后的 xcddatamodel 文件中找到了答案。在右侧面板上,您将看到“代码生成”下拉菜单。它可能默认为 Swift,将其更改为 Objective c 并构建项目。将生成您的文件。
【讨论】:
以上是关于Xcode 没有生成正确的 coredata 模型文件的主要内容,如果未能解决你的问题,请参考以下文章