菜鸟教程小白 发表于 2022-12-12 14:25:13

ios - 如何将我自己的枚举作为属性存储在 CoreData


                                            <p><p>我定义了一个名为 MyEnum 的全局枚举:</p>

<pre><code>enum MyEnum: Int{
    case year = 100, month, week, day
}
</code></pre>

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

<p> <a href="/image/0QjX9.png" rel="noreferrer noopener nofollow"><img src="/image/0QjX9.png" alt="enter image description here"/></a> </p>

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

<pre><code>@NSManaged public var myEnum: NSObject
</code></pre>

<p>到</p>

<pre><code>@NSManaged public var myEnum: MyEnum
</code></pre>

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

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

<p>请使用swift,感谢您的帮助</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我们通常将枚举作为字符串或整数存储到数据库中。这真的取决于要使用的情况,但考虑到你有类似的东西</p>

<pre><code>@NSManaged public var myEnumAsInteger: Int
</code></pre>

<p>那么你要做的就是保存它:</p>

<pre><code>myObject.myEnumAsInteger = enumValue.rawValue
</code></pre>

<p>并阅读它:</p>

<pre><code>enumValue = MyEnum(rawValue: myObject.myEnumAsInteger)
</code></pre>

<p>或者你可以只创建另一个属性并覆盖getter,setter如下:</p>

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

}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何将我自己的枚举作为属性存储在 CoreData,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/48143778/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/48143778/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何将我自己的枚举作为属性存储在 CoreData