我定义了一个名为MyEnum的全局枚举:
enum MyEnum: Int{
case year = 100, month, week, day
}
目的是将此枚举存储为我的实体的属性(我将此枚举属性声明为可在xcdatamodel文件中转换):
创建NSManagedObject子类后,在In + CoreDataProperties.swift中,我试图改变
@NSManaged public var myEnum: NSObject
到
@NSManaged public var myEnum: MyEnum
但是在执行saveContext()时,仍然会发生错误。我刚刚开始学习并且没办法如何做下一步
那么我应该做些额外的工作来将我的枚举存储为我的实体的属性?
请使用swift,感谢您的帮助
答案 0 :(得分:3)
我们通常将枚举作为字符串或整数存储到数据库中。这实际上取决于使用的情况,但考虑到你有类似的东西
@NSManaged public var myEnumAsInteger: Int
然后保存它你所做的就是:
myObject.myEnumAsInteger = enumValue.rawValue
并阅读:
enumValue = MyEnum(rawValue: myObject.myEnumAsInteger)
或者您可以创建另一个属性并覆盖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
}
}