2017-01-23 8 views
0

struct Arrayを保存する関数を記述したいと思います。 NSCodingを使用するのは正しい方法ですが、クラスでのみ使用できます。しかし、構造体自体を含むクラスを使用した回避策が見つかりました:NSCodingで構造体を保存するためのヘルパークラス

extension EXIFData { 
    class EXIFDataClass: NSObject, NSCoding { 

     var exifData: EXIFData? 
... 
} 

しかし、どうすれば使用できますか?例えば。

var exif : EXIFData 

または(次のステップ)私はちょうど始めているので、私は、スウィフト3.0の実際の機能を可能な限り使用したい

var exifs : [EXIFData] 

として定義されています。私はSwiftの古いスタイルとバージョンのためのいくつかの異なるソリューションを見つけました。

答えて

1

EXIFDataクラスが何であるか分かりませんが、EXIFDataオブジェクトを含むクラスを保存する方がよいと思います。

セイ例えばあなたは、あなたが、デコードエンコードし、EXIFDataタイプでクラスを初期化し、次のようなクラスを作成することができ、EXIFDataを含む異なる種類のデータの束を保存する必要があります。

class UserData: NSObject, NSCoding { 

    var exifData: EXIFData 
    //other variables of data.... 

    required init?(coder aDecoder: NSCoder) { 
     exifData = aDecoder.decodeObject(forKey: "EXIFData") as! EXIFData 
     //decode other values 
    } 

    init(exifData: EXIFData) { 
     self.exifData = exifData 
     //intialize other values 
    } 

    func encode(with aCoder: NSCoder) { 
     aCoder.encode(exifData, forKey: "EXIFData") 
     //encode other values 
    } 

} 

そして、あなたがそうのようなあなたのクラスを初期化できます。その後、

var myUserData = UserData(...) //initialize with EXIFData 

そしてそうのようなユーザー「EXIFData」を呼び出します。

myUserData.exifData 
+0

EXIFDataは構造体です。このデータだけが読み込まれ、保存される必要があります。最後に、その配列を保存したい:[EXIFData] –

関連する問題