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

时间:2018-01-08 03:09:30

标签: ios core-data

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

enum MyEnum: Int{
    case year = 100, month, week, day
}

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

enter image description here

创建NSManagedObject子类后,在In + CoreDataProperties.swift中,我试图改变

@NSManaged public var myEnum: NSObject

@NSManaged public var myEnum: MyEnum

但是在执行saveContext()时,仍然会发生错误。我刚刚开始学习并且没办法如何做下一步

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

请使用swift,感谢您的帮助

1 个答案:

答案 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
    }

}