2016-11-10 10 views
1

私は(swift-y)構造体NSCodableを作成したカスタムクラスを持っています。今私はCloudKitを使用するためにそれをCKRecordに変換したいと思います。私の構造体をエンコーディングする際に 'キー値'の組を設定しても、構造体がNSDataに変換され、それをDictionary(または別のKey-Valueオブジェクト)に変換することはできません。だから私はこれが行く方法ではないと感じる。CKRecordへのNSCoding

この変換を直接行う方法はありますか?または中間のステップで(例えば、データを[String:String] - 辞書に変換する)?

+0

CKRecordに 'NSData'を格納することができます。 – rmaddy

+0

しかし、その結果、CKRecordの中にデータブロブが発生します。私はそれを変換する便利な方法を持っていたいと思います。 –

答えて

0

NSCodingは、同じクラスからの、または同じクラスへの移動のためのものです。代わりにCloudKitに送信するプロパティだけを含めてカスタムクラスにtoServerDictionaryメソッドを書き込み、その結果を使用してCKRecordのsetValuesForKeysを呼び出します。

特定の型である必要があるプロパティがあります。この場合、toServerRecordメソッドを作成してCKRecordを作成して返す方がよいでしょう。 updateWithServerRecordを使用して、受け取ったものを設定することもできます。

関連する問題