迅速な列挙型をコアデータに保存する方法は?

user965972

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)! }
   }
 }

別の解決策は、以下の回答に示されています。

user965972

別のアプローチは、プリミティブ関数を使用することです。これにより、2つの変数を定義する必要がなくなります。モデルエディタでは、カードは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

列挙型データ型に特殊文字を保存する

分類Dev

列挙型を文字列としてデータベースに保存する方法

分類Dev

列挙型を迅速にインポートする方法

分類Dev

デコード可能な列挙型から生の値を取得するにはどうすればよいですか?迅速

分類Dev

TypeScriptの列挙型でデコレータを使用する方法

分類Dev

タイプセーフな列挙型をモデル化する方法は?

分類Dev

タイプセーフな列挙型をモデル化する方法は?

分類Dev

タイプセーフな列挙型をモデル化する方法は?

分類Dev

迅速なosxアプリでデータをローカルに保存する方法は?

分類Dev

Haskellで再帰データ型を列挙する方法は?

分類Dev

データベースルームに列挙型フィールドを保存する方法

分類Dev

構造体モデル内の列挙型にアクセスする方法は?迅速

分類Dev

@objcタグを使用して迅速な列挙型を渡す方法

分類Dev

Spring Data:列挙型リストをmySQLデータベースに保存する方法

分類Dev

Python3-列挙型を異なるデータ型に変換する

分類Dev

列挙型のケースに関係なく、迅速な列挙型に関連付けられた値を取得する方法

分類Dev

列挙型アイテム間で非コピーデータを移動する方法

分類Dev

列挙型の状態をSwiftのCoreDataに保存する方法は?

分類Dev

phpクラスをmysql列挙型に保存する方法は?

分類Dev

phpクラスをmysql列挙型に保存する方法は?

分類Dev

列挙型をUserDefaultsに保存する方法は?

分類Dev

postgresの同じ列内に異なるデータ型を保存する正しい方法はありますか?

分類Dev

列挙型データ型の場合にユーザー入力を取得するための可能な方法はありますか?

分類Dev

(各列挙型の属性ではなく)グローバルに列挙型を文字列としてシリアル化する方法は?

分類Dev

Intをコアデータに保存する正しい方法は?

分類Dev

UIImagePickerController-画像をコアデータに保存する方法は?

分類Dev

UIButton値をコアデータに保存する方法は?

分類Dev

JSON逆シリアル化のために文字列を列挙型コンバーターに使用する方法は?

Related 関連記事

  1. 1

    列挙型をデータベースに保存する方法

  2. 2

    列挙型データ型に特殊文字を保存する

  3. 3

    列挙型を文字列としてデータベースに保存する方法

  4. 4

    列挙型を迅速にインポートする方法

  5. 5

    デコード可能な列挙型から生の値を取得するにはどうすればよいですか?迅速

  6. 6

    TypeScriptの列挙型でデコレータを使用する方法

  7. 7

    タイプセーフな列挙型をモデル化する方法は?

  8. 8

    タイプセーフな列挙型をモデル化する方法は?

  9. 9

    タイプセーフな列挙型をモデル化する方法は?

  10. 10

    迅速なosxアプリでデータをローカルに保存する方法は?

  11. 11

    Haskellで再帰データ型を列挙する方法は?

  12. 12

    データベースルームに列挙型フィールドを保存する方法

  13. 13

    構造体モデル内の列挙型にアクセスする方法は?迅速

  14. 14

    @objcタグを使用して迅速な列挙型を渡す方法

  15. 15

    Spring Data:列挙型リストをmySQLデータベースに保存する方法

  16. 16

    Python3-列挙型を異なるデータ型に変換する

  17. 17

    列挙型のケースに関係なく、迅速な列挙型に関連付けられた値を取得する方法

  18. 18

    列挙型アイテム間で非コピーデータを移動する方法

  19. 19

    列挙型の状態をSwiftのCoreDataに保存する方法は?

  20. 20

    phpクラスをmysql列挙型に保存する方法は?

  21. 21

    phpクラスをmysql列挙型に保存する方法は?

  22. 22

    列挙型をUserDefaultsに保存する方法は?

  23. 23

    postgresの同じ列内に異なるデータ型を保存する正しい方法はありますか?

  24. 24

    列挙型データ型の場合にユーザー入力を取得するための可能な方法はありますか?

  25. 25

    (各列挙型の属性ではなく)グローバルに列挙型を文字列としてシリアル化する方法は?

  26. 26

    Intをコアデータに保存する正しい方法は?

  27. 27

    UIImagePickerController-画像をコアデータに保存する方法は?

  28. 28

    UIButton値をコアデータに保存する方法は?

  29. 29

    JSON逆シリアル化のために文字列を列挙型コンバーターに使用する方法は?

ホットタグ

アーカイブ