0

それぞれが非標準のデータ型を持つコア データ ストアにエンティティを配置しようとしています - 1 つは NSDocument で、もう 1 つは NSURL です。.xcdatamodeld 内で、それらを Transformable として宣言する必要があることがわかりました。そして、それらを NSData に変換するために NSValueTransformer を実装するものを追加する必要があると思います(... または、それを自動的に行うデフォルトのトランスフォーマーはありますか?)

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

folderURL という属性を持つ Notebook というエンティティ タイプがあるとします。データベースでは Transformable タイプで、実際の変数では NSURL タイプです。(これは単純な例なので、例として使用しています。NSURL を文字列に変換するように言わないでください。他の Transformable では機能しないためです。)

質問: folderURL の NSValueTransformer をどこに配置すればよいですか? ノートブックに実装する必要がありますか? ノートブック + CoreDataProperties を使用する必要がありますか? または、それを実装する FolderURL という別のサブクラスが必要ですか? その場合、そのサブクラスを Notebook (および/または Notebook+CoreDataProperties) で参照するにはどうすればよいですか?

(同様のタイトルの以前の質問がありましたが、彼らはすでにこれよりも少し先に進んでいるようです - 彼らは「どこで」について尋ねたり実演したりしていません.)

4

1 に答える 1

2

「場所」は、プロジェクトのどこにでもあります。NSValueTransformer実行時にサブクラスが確実に存在する場所。サブクラスを実装NSValueTransformerし、Core Data モデルにクラス名を値トランスフォーマーとして入力します。

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

サブクラスについては、クラスに実装するか、ドキュメント タイプのサブクラスを実装するNSDocumentかを選択できます。NSCodingNSValueTransformer

于 2016-07-15T17:29:29.047 に答える