NSManagedObjet クラス オブジェクトをモデルとして直接使用するか、モデル用に個別のクラスを作成し、これらのモデル クラスから NSManagedObject クラス オブジェクトにデータをマップするデータ マッパーを作成するかの選択について、少し混乱しています。Core Data オブジェクトをモデルとして使用することに害はありますか? 両方のアプローチの長所と短所は何ですか?
前もって感謝します、
よろしく、
tek3
NSManagedObjet クラス オブジェクトをモデルとして直接使用するか、モデル用に個別のクラスを作成し、これらのモデル クラスから NSManagedObject クラス オブジェクトにデータをマップするデータ マッパーを作成するかの選択について、少し混乱しています。Core Data オブジェクトをモデルとして使用することに害はありますか? 両方のアプローチの長所と短所は何ですか?
前もって感謝します、
よろしく、
tek3
私はあなたの質問を読みましたが、NSManagedObject を直接使用するか、NSManagedObject をサブクラス化するかを尋ねているのではなく、自分で作成した明示的なメソッドによって Core Data を使用する別のクラスとしてモデルを使用する必要がある場合は、質問していると思います。
Core Data は、アプリケーションのモデル レイヤーとして機能するように設計されています。ある時点でコア データを完全に放棄する自由が本当に必要でない限り、独自のモデル クラスを持ち、それらのインターフェイスを作成し、それを舞台裏でコア データに実装することには、実際の利点はないと思います。
モデル クラスを NSManagedObject のサブクラスとして作成することをお勧めします。コア データが提供するものを超えて必要と思われる方法でそれらを自由に拡張できますが、同時に、モデル クラスはコア データ フレームワークから十分な利点を得ることができます: フォールト、キャッシング、データ整合性保証、カスケード削除など。 ..
をそのまま使用するNSManagedObject
と、属性や関係を参照する際に便利な「ドット表記」のメリットがなくなります。
また、すべての値を取得し、その後に文字列を指定valueForKey
して設定する必要がsetValueForKey
あります。これは非常にエラーが発生しやすく、扱いにくく、結果のコードはドット表記の場合ほど読みにくくなります。
最後に、オブジェクト クラスでは、あらゆる種類の追加機能を実装できます。そうでなければ、このコードをどこに置きますか? 独立した再利用可能なコードを生成するのに役立つカプセル化の原則を思い出してください。