如何将我自己的枚举存储为 CoreData 中的属性

Hao*_*Hao 4 core-data ios

我定义了一个名为 MyEnum 的全局枚举:

enum MyEnum: Int{
    case year = 100, month, week, day
}
Run Code Online (Sandbox Code Playgroud)

目的是将此枚举存储为我的实体的属性(我在 xcdatamodel 文件中将此枚举属性声明为可转换):

在此处输入图片说明

创建 NSManagedObject 子类后,在 +CoreDataProperties.swift 中,我尝试更改

@NSManaged public var myEnum: NSObject
Run Code Online (Sandbox Code Playgroud)

@NSManaged public var myEnum: MyEnum
Run Code Online (Sandbox Code Playgroud)

但是在执行saveContext()时,还是出现了错误。我刚开始学习,不知道下一步该怎么做

那么我应该做哪些额外的工作来将我的枚举存储为我的实体的属性?

请快速使用,感谢您的帮助

Mat*_*lak 10

我们通常将枚举作为字符串或整数存储到数据库中。这实际上取决于要使用的情况,但请考虑您有类似的东西

@NSManaged public var myEnumAsInteger: Int
Run Code Online (Sandbox Code Playgroud)

然后要保存它,您要做的就是:

myObject.myEnumAsInteger = enumValue.rawValue
Run Code Online (Sandbox Code Playgroud)

并阅读它:

enumValue = MyEnum(rawValue: myObject.myEnumAsInteger)
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建另一个属性并覆盖 getter、setter,如下所示:

@NSManaged public var myEnumAsInteger: Int

var myEnum: MyEnum {
    set {
        self.myEnumAsInteger = newValue.rawValue
    }
    get {
        return MyEnum(rawValue: self.myEnumAsInteger) ?? .year // Or whatever the default is
    }

}
Run Code Online (Sandbox Code Playgroud)