【问题标题】:Duplicate Symbol Error in NSManagedObject SubclassNSManagedObject 子类中的重复符号错误
【发布时间】:2017-04-13 12:29:27
【问题描述】:

我只是简单地使用 Core Data 创建了一个演示项目。

我在我的数据模型中创建了一个实体 Userinfo。现在我创建了这个实体的NSManagedObject 子类。

Xcode 自动生成这 4 个类。

现在,当我构建项目时,它会抛出此错误:

我已尽我所能消除重复的错误,但没有任何帮助。

我认为这是一个 Xcode 错误。请帮忙。

【问题讨论】:

  • 这里对我来说是更短更简单的解决方案。 This is

标签: ios objective-c swift core-data nsmanagedobject


【解决方案1】:

您正在生成 Xcode 已经为您生成的文件,因此会得到重复的声明。有关此功能的详细信息(Xcode 8 中的新功能)可以在this WWDC video 中找到。

两个可能的修复:

1) 使用 Xcode 生成的 ManagedObject 子类(推荐的现代方法)

  • 从您的项目中删除所有生成的 NSManagedObject 子类(如果存在)。
  • 在所有实体的.xcdatamodel 中将Codegen 设置为Class Definition
  • 确保 Module 为空(“全局命名空间”为浅灰色)(解决 Apple 错误的方法,请参阅 this answer

注意:

切勿将自动生成的文件添加到您的项目中。即使您在项目中看不到生成的文件,Xcode 也会引用它,因此您可以编写扩展等。例如:

extension MyEntity {
    func doSomething() {
        //
    }
}

此外,您可以在 Xcode 中使用命令并单击生成的文件。

2) 手动触发子类生成(一种相当偏执但经过子弹验证的方法,忽略了新的 Xcode 功能)

  • 从您的项目中删除所有生成的 NSManagedObject 子类(如果存在)。
  • 在所有实体的.xcdatamodel 中将Codegen 设置为Manual/None
  • 清理项目
  • Clean DerivedData folder
  • 重启 Xcode
  • 手动生成NSManagedObject 子类(在“编辑器”菜单中)
  • 确保将这些文件添加到您的项目中
  • 构建

【讨论】:

  • 这些文件是在哪里生成的?因为我需要这些课程来达到我的目的。
  • 在派生数据中。不要将它们添加到您的项目中。如果您遵循答案,它会起作用,Xcode 会自动引用它。你也可以写扩展。如果您有问题,请描述您遇到的问题。我会尽力提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
相关资源
最近更新 更多