如何在核心数据中存储快速枚举?

用户名

Swift允许您定义枚举,但是核心数据不支持(即开即用)如何保存它们。

我在互联网上看到(到目前为止已使用)的推荐解决方案是使用私有变量:

class ManagedObjectSubClass : NSManagedObject
{
  enum Cards : Int
  {
    case Diamonds, Hearts
  }
   @nsmanaged var cardRaw: Int

   var card : Cards {
     set { self.cardRaw = newValue.rawValue }
     get { return Cards(RawValue:cardRaw)! }
   }
 }

下面的答案中给出了一个替代解决方案。

用户名

另一种方法是使用原始函数。这样避免了必须定义两个变量。在模型编辑器中,卡被定义为Int。

class ManagedObjectSubClass : NSManagedObject
{
  enum Cards : Int
  {
    case Diamonds, Hearts
  }

   var card : Cards {
     set { 
        let primitiveValue = newValue.rawValue
        self.willChangeValueForKey("card")
        self.setPrimitiveValue(primitiveValue, forKey: "card")
        self.didChangeValueForKey("card")
     }
     get { 
        self.willAccessValueForKey("card")
        let result = self.primitiveValueForKey("card") as! Int
        self.didAccessValueForKey("card")
        return Cards(rawValue:result)!
    }
   }
 }

编辑:

重复部分可以移至NSManagedObject上的扩展名。

func setRawValue<ValueType: RawRepresentable>(value: ValueType, forKey key: String)
{
    self.willChangeValueForKey(key)
    self.setPrimitiveValue(value.rawValue as? AnyObject, forKey: key)
    self.didChangeValueForKey(key)
}

func rawValueForKey<ValueType: RawRepresentable>(key: String) -> ValueType?
{
    self.willAccessValueForKey(key)
    let result = self.primitiveValueForKey(key) as! ValueType.RawValue
    self.didAccessValueForKey(key)
    return ValueType(rawValue:result)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在核心数据中顺序存储数据?

来自分类Dev

如何在iOS的核心数据中存储JSON数据

来自分类Dev

如何在核心数据中存储NSDate?

来自分类Dev

如何在核心数据中存储CGPoint?

来自分类Dev

如何在核心数据中存储数组(Swift)

来自分类Dev

如何在核心数据中存储NSDate?

来自分类Dev

如何在核心数据中存储UIButton值?

来自分类Dev

Swift核心数据:核心数据中的枚举

来自分类Dev

数据如何存储在核心数据模型中(属性)

来自分类Dev

数据如何存储在核心数据模型中(属性)

来自分类Dev

如何在WatchKit Extension目标中获取核心数据持久存储路径

来自分类Dev

如果按下uibutton,如何在核心数据中存储值?

来自分类Dev

如何在WatchKit Extension目标中获取核心数据持久存储路径

来自分类Dev

如果按下uibutton,如何在核心数据中存储值?

来自分类Dev

如何快速将MKPolyline属性存储为可转换的IOS核心数据?

来自分类Dev

如何快速将MKPolyline属性存储为可转换的IOS核心数据?

来自分类Dev

在核心数据中存储CLLocationCoordinates

来自分类Dev

在核心数据中存储UIColor对象

来自分类Dev

如何在Swift中创建核心数据关系

来自分类Dev

如何在核心数据中连接实体

来自分类Dev

核心数据:如何快速将大量数组插入核心数据?

来自分类Dev

您如何将NSMutable阵列中的数据存储在核心数据中?

来自分类Dev

您如何将NSMutable阵列中的数据存储在核心数据中?

来自分类Dev

如何保存相关的核心数据对象以快速分析

来自分类Dev

删除核心数据中的重复对象(快速)

来自分类Dev

快速的核心数据:保存相机中的图像

来自分类Dev

如何更新核心数据中的对象?

来自分类Dev

如何使用html显示存储在核心数据数据库中的jpeg图像

来自分类Dev

我如何使用存储的整数属性对核心数据中的数组进行排序?

Related 相关文章

  1. 1

    如何在核心数据中顺序存储数据?

  2. 2

    如何在iOS的核心数据中存储JSON数据

  3. 3

    如何在核心数据中存储NSDate?

  4. 4

    如何在核心数据中存储CGPoint?

  5. 5

    如何在核心数据中存储数组(Swift)

  6. 6

    如何在核心数据中存储NSDate?

  7. 7

    如何在核心数据中存储UIButton值?

  8. 8

    Swift核心数据:核心数据中的枚举

  9. 9

    数据如何存储在核心数据模型中(属性)

  10. 10

    数据如何存储在核心数据模型中(属性)

  11. 11

    如何在WatchKit Extension目标中获取核心数据持久存储路径

  12. 12

    如果按下uibutton,如何在核心数据中存储值?

  13. 13

    如何在WatchKit Extension目标中获取核心数据持久存储路径

  14. 14

    如果按下uibutton,如何在核心数据中存储值?

  15. 15

    如何快速将MKPolyline属性存储为可转换的IOS核心数据?

  16. 16

    如何快速将MKPolyline属性存储为可转换的IOS核心数据?

  17. 17

    在核心数据中存储CLLocationCoordinates

  18. 18

    在核心数据中存储UIColor对象

  19. 19

    如何在Swift中创建核心数据关系

  20. 20

    如何在核心数据中连接实体

  21. 21

    核心数据:如何快速将大量数组插入核心数据?

  22. 22

    您如何将NSMutable阵列中的数据存储在核心数据中?

  23. 23

    您如何将NSMutable阵列中的数据存储在核心数据中?

  24. 24

    如何保存相关的核心数据对象以快速分析

  25. 25

    删除核心数据中的重复对象(快速)

  26. 26

    快速的核心数据:保存相机中的图像

  27. 27

    如何更新核心数据中的对象?

  28. 28

    如何使用html显示存储在核心数据数据库中的jpeg图像

  29. 29

    我如何使用存储的整数属性对核心数据中的数组进行排序?

热门标签

归档