2016-07-15 5 views
0

コアデータストアに、非標準のデータ型を持つエンティティを配置しようとしています.1つはNSDocumentで、もう1つはNSURLです。私は.xcdatamodeldの中でそれを取得します。私はそれらをTransformableとして宣言する必要があります。 (?...または、自動的にそれを行いますデフォルトの変圧器がある)そして私は、私はNSDataのにそれらを回すためにNSValueTransformerを実装して何かを追加する必要が思いSwiftでコアデータ用のNSValueTransformerを実装する場所

を私は質問に答えるために簡単であるべきだと思います。ここで、私はそれを実装するのですか?私はSwiftでこれを行う明示的な例は見つけていません。 Objective-C exampleがありますが、.hと.mファイルが分かれているため、Swiftにはどこに行くのかわかりません。

ノートブックという名前のエンティティタイプがfolderURL - データベースにTransformableタイプであり、実際の変数にNSURLタイプのものがあるとします。 (私は例としてそれを使用しています。単純なものですから、NSURLを文字列に変換するように教えてください。他のTransformableでは機能しないためです)。

私は1つを必要と仮定して、folderURLのNSValueTransformerを置くのですか?ノートブックはそれを実装する必要がありますか? Notebook + CoreDataPropertiesは必要ですか?または、それを実装するFolderURLという個別のサブクラスが必要ですか?その場合、ノートブック(および/またはノートブック+ CoreDataProperties)のサブクラスをどのように参照するのですか?

similar titleとそれ以前の問題がありましたが、彼らはすでにこれより少しさらに持っているように見える - 。彼らは尋ねるか、「どこで」について実証していない)

答えて

1

は、「どこで」だけですあなたのプロジェクトのどこにでも。実行時にNSValueTransformerサブクラスが存在することを保証する任意の場所。 NSValueTransformerサブクラスを実装し、コアデータモデルに値トランスフォーマとしてクラス名を入力します。

ただし、はデフォルトトランスフォーマーです。 NSCodingプロトコルを採用しているクラスは、コアデータによって自動的に変換されます。その場合は、属性をtransformableとしてマークしますが、クラス名は含めません。これにはNSURLが含まれているため、それを変換したり、文字列に変換したりする必要はありません。

NSDocumentサブクラスの場合は、NSCodingをクラスに実装するか、ドキュメントタイプのサブクラスNSValueTransformerを実装するかを選択できます。

関連する問題