OGeek|极客世界-中国程序员成长平台

标题: ios - 如何将我自己的枚举作为属性存储在 CoreData [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 14:25
标题: ios - 如何将我自己的枚举作为属性存储在 CoreData

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

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

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

enter image description here

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

@NSManaged public var myEnum: NSObject

@NSManaged public var myEnum: MyEnum

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

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

请使用swift,感谢您的帮助



Best Answer-推荐答案


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

@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
    }

}

关于ios - 如何将我自己的枚举作为属性存储在 CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143778/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4