在 Xcode 8.2 beta 中创建 NSManaged 子类时出错
Posted
技术标签:
【中文标题】在 Xcode 8.2 beta 中创建 NSManaged 子类时出错【英文标题】:Error when creating NSManaged Subclass in Xcode 8.2 beta 【发布时间】:2016-11-06 08:29:55 【问题描述】:我收到此错误,似乎警告我有重复文件。我是否遗漏了什么,或者 Xcode 现在不需要创建 nsmanaged 子类来操作核心数据。我尝试创建一个空白项目,同样的事情发生了。这是错误数据
<unknown>:0: error: filename "Card+CoreDataClass.swift" used twice: '/Users/user/Documents/Developer/coredata/Card+CoreDataClass.swift' and '/Users/user/Library/Developer/Xcode/DerivedData/coredata-gicbdltjgiidbcfxaqqaxvkqwnnk/Build/Intermediates/coredata.build/Debug-iphonesimulator/coredata.build/DerivedSources/CoreDataGenerated/coredata/Card+CoreDataClass.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
<unknown>:0: error: filename "Card+CoreDataProperties.swift" used twice: '/Users/user/Documents/Developer/coredata/Card+CoreDataProperties.swift' and '/Users/user/Library/Developer/Xcode/DerivedData/coredata-gicbdltjgiidbcfxaqqaxvkqwnnk/Build/Intermediates/coredata.build/Debug-iphonesimulator/coredata.build/DerivedSources/CoreDataGenerated/coredata/Card+CoreDataProperties.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
这对我来说意味着文件已经自动创建。我什至可以在不手动创建子类的情况下制作 Card 对象。谢谢。
【问题讨论】:
检查:***.com/a/40357746/1457385,也许是***.com/a/39933534/1457385 我已经检查了它们,尝试了它们,但仍然出现错误。我现在制作了一个没有生成子类的应用程序并且它可以工作。所以我猜他们现在正在自动实现 coredata 子类? 取决于您的设置。上述答案中对此进行了详细说明。您可能还想观看 WWDC 视频“Core Data 中的新功能”:developer.apple.com/videos/play/wwdc2016/242 我看过那个视频 :) 奇怪的是我有一个使用子类的应用程序,但现在我几天前创建的应用程序在没有子类的情况下工作。 xCode 发行说明没有提及此类内容。 发布您的实体“代码生成”设置的屏幕截图。 【参考方案1】:这里的问题是,从 Xcode 8 开始,使用 Core Data 的新项目和新的 Core Data 数据模型默认配置为使用自动代码生成。这意味着您不必再为您的 Core Data 实体显式生成代码,Xcode 会为您处理这些。如果您将自动代码生成留在并且还为您的实体手动生成 Swift 类,您将看到类似这样的错误。
您可以在实体检查器中为实体禁用自动代码生成,也可以从项目中移除手动生成的代码。两者中的任何一个都应该解决这个问题。
【讨论】:
感谢您的回答。午餐时删除了手动创建的 NSManagedObject 子类,现在一切正常【参考方案2】:尝试通过 Xcode > 首选项 > 位置 > 小灰色箭头 > 将内容移动到垃圾箱来清除派生数据。然后清理项目并重建。
【讨论】:
你好,谢谢你的回复,这并没有解决问题,它仍然产生同样的错误。 如果您进入项目的构建阶段,在编译的源代码下,该文件是否列出了两次? 不,只有一次。但奇怪的是,即使我不创建子类,我也可以实例化我的 Card 对象。【参考方案3】:首先检查你的项目你没有两次导入这个文件Card+CoreDataProperties
,同时检查你没有在整个项目中创建这个类Card+CoreDataProperties
两次,还删除派生数据并清理你的项目。
【讨论】:
以上是关于在 Xcode 8.2 beta 中创建 NSManaged 子类时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 iOS 5.0 Beta 版本在 Xcode 4.2 中创建 IPA 文件
无法在 iPhone 上运行在 xcode 中创建的应用程序