CoreData 无法正确“创建 NSManagedObject 子类”Swift
Posted
技术标签:
【中文标题】CoreData 无法正确“创建 NSManagedObject 子类”Swift【英文标题】:CoreData Can't Properly 'Create NSManagedObject Subclass' Swift 【发布时间】:2016-09-28 19:28:24 【问题描述】:总的来说,我在使用 Xcode 时遇到了很多问题,但我的所有项目才刚刚开始出现这种情况。
我创建了一个新实体,我的核心数据模型选择了正确的“目标成员”。
但是一旦我尝试为我的新实体选择“创建 NSManagedObject 子类”,向导会正确引导我完成所有必要的步骤,并且我会得到以下生成的 Swift 代码:
import Foundation
import CoreData
class CoreDatGeneric: NSManagedObject
// Insert code here to add functionality to your managed object subclass
import Foundation
import CoreData
class CoreDatGeneric: NSManagedObject
// Insert code here to add functionality to your managed object subclass
但是...我不能在我的代码中使用这个名为 CoreDatGeneric
ANYWHERE 的新 Swift 类...
例如,
let data = DoreDatGeneric()
导致编译器错误声明Use of unresolved identifier 'CoreDatGeneric'
我不知道为什么会突然发生这种情况,我所有其他较旧的 Core Data 实体都可以正常工作,但我被困在无法再在我的任何项目中使用核心数据的地步。
我非常担心升级到 Xcode 8,因为最新的 Xcode 收到了负面评论。我现在正在使用 Xcode 7。
【问题讨论】:
你确定CoreDatGeneric.swift
属于 Xcode 中的应用目标吗?你也确定你的班级名称拼写正确吗?你在你的问题中拼错了......
【参考方案1】:
转到数据模型检查器面板并选择 Codegen 为“手动/无”。在编辑器下创建托管子类。 Xcode 将创建两个 swift 文件。一个是 *Properties.swift,一个包含模型所有属性的扩展文件(Xcode 会在你创建子类时覆盖这个文件)。另一个是 *Class.swift,您可以在其中添加自定义类行为。无需编写任何代码,您应该能够调用
let data = CoreDatGeneric()
在您的 ViewController 中。
如果 Codegen 说“类定义”,那么您不必执行创建托管子类,因为在您构建项目时会为您创建类(文件不会显示在项目检查器中)。但是,您仍然可以在 viewController 中创建一个如上所述的变量(例如)。
【讨论】:
以上是关于CoreData 无法正确“创建 NSManagedObject 子类”Swift的主要内容,如果未能解决你的问题,请参考以下文章
Swift/CoreData:-[:]:发送到实例的无法识别的选择器