1

Location というコア データにエンティティがあります。この中には、日付などのいくつかのフィールドがあります。しかし、Annotation という名前で作成したクラス オブジェクトも保存したいと思います。これは私が作成したカスタム クラス オブジェクトなので、どのタイプの属性を使用すればよいでしょうか?

Location (object)
|__ Date
|__ Annotation (MKAnnotation protocol)
4

2 に答える 2

2

次の 2 つのオプションがあります。

  1. クラスがプロトコルAnnotationに準拠している場合(または、カスタム クラスをインスタンスに変換する を作成する場合は、Core Data エンティティで変換可能な属性を使用できます。Core Data は、指定された を使用して自動的にシリアル化/逆シリアル化しますあなたのためのインスタンス。NSCodingNSValueTransformerNSDataNSValueTransformerAnnotation

  2. AnnotationCore Data モデルでエンティティを作成できます。CLLocationCoordinate2Dをエンティティに割り当てるには、独自のコードを記述する必要があります。おそらく、2 つdoubleの を使用して永続的なバッキングを作成し、CLLocationCoordinate2D.

(1) の利点は、(クラスが に準拠している場合NSCoding) 簡単であることです。(2) の利点は、SQLite 永続ストアを使用している場合でも、エンティティ内のデータに対してクエリを実行できることです。(1) を使用すると、データは SQLite クエリ エンジンに対して不透明になるため、SQLite バックエンドでクエリを実行することはできません。

于 2010-06-14T06:12:57.893 に答える
1

クラスをコア データ クラスとして追加する方が簡単で、2 つのクラス間の関係を 1 対 1 の関係にすることができます。ただし、タイプ バイナリ データを属性タイプとして使用し、そこに必要なデータを格納することができます。(私は時々これを使用して c 構造体を格納します) NSData クラスを使用してオブジェクトをラップし、プロパティを設定するだけです。

于 2010-06-14T02:29:12.810 に答える