Core data 使用swift 3和Xcode 8 beta子类化NSManagedObject

Core data 使用swift 3和Xcode 8 beta子类化NSManagedObject,core-data,nsmanagedobject,swift3,xcode8,Core Data,Nsmanagedobject,Swift3,Xcode8,我已经开始尝试在swift 3和Xcode 8测试版中使用核心数据。当我尝试从核心数据模型生成NSManagedObject子类并在编辑器菜单中创建NSManagedObject子类…选项时,Xcode 8 beta会生成三个文件,其中一个文件是\u COREDATA\u DATAMODELNAME\u+CoreDataModel.swift,包含以下内容: import Foundation import CoreData ___COREDATA_DATAMODEL_MANAGEDOBJEC

我已经开始尝试在swift 3和Xcode 8测试版中使用核心数据。当我尝试从核心数据模型生成NSManagedObject子类并在编辑器菜单中创建NSManagedObject子类…选项时,Xcode 8 beta会生成三个文件,其中一个文件是\u COREDATA\u DATAMODELNAME\u+CoreDataModel.swift,包含以下内容:

import Foundation
import CoreData

___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___
此外,此文件的内容显示两个警告:

Expressions are not allowed at the top level.
Use of unresolved identifier '___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___'
有人面临过同样的问题吗?这个新文件的意思是什么

感谢

这可能与新的自动子类生成(可在数据模型文件的实体检查器中控制)发生(beta)冲突

Xcode自动子类生成 Xcode现在支持自动生成
NSManagedObject
子类 在建模工具中。在实体检查器中:

  • 手动/无是默认值,并且是以前的行为;在这种情况下,你 应该实现自己的子类或使用
    NSManagedObject
  • 类别/扩展名在名为like的文件中生成类扩展名
    ClassName+CoreDataGeneratedProperties
    。您需要声明/实现 主类(如果在Obj-C中,则通过扩展可以导入的头) 命名为ClassName.h)。-
  • 类定义生成名为 如
    ClassName+CoreDataClass
    以及为 类别/扩展
生成的文件放置在DerivedData和 保存模型后在第一次生成时重建。他们也是 由Xcode索引,因此命令单击引用并快速打开 按文件名工作


我对这个开发人员beta Xcode 8也有类似的问题。其中一些在我离开数据模型或生成NSManagedObject子类之前解析了Command+S(保存更改)。我不知道为什么,但在我的例子中,自动保存有时不起作用,并且出现了一些错误。

我遇到了上面引用的.swift文件的问题,并发现注释掉uuuu COREDATA。。。这条线暂时把我弄错了。我不确定它应该完成什么

我还发现,XCODE 8倾向于忘记添加到CoreData实体的新字段,并反复将CoreData模型代码生成目标重置为Objective C,导致在重新生成文件时出现大量.h和.m文件,而不是swift文件。我看到的大多数问题都与CoreData相关,但到目前为止都是可行的


除此之外,XCODE 8在处理一个包含25个数据实体和30多个视图控制器的应用程序时表现出了惊人的稳定,所以我并不抱怨

谢谢。在等待Xcode 8的新版本时,我将尝试这三个选项。注意:如果您想在Swift中生成代码,还可以在文件检查器中选择代码的语言。出于某种原因,尽管创建了一个Swift项目,但我的目标是C。然后,这是一个从beta到GM的项目迁移。实体检查器是什么-找到答案:在这里编辑实体,.xcdatamodel文件我无法在Xcode 8 beta中创建自定义
NSManagedObject
子类。我也有同样的问题。我通过以下方式修复了objc的几乎所有问题: