1

私がデータベースと ORM (オブジェクト関係マネージャー) を含む Java アプリケーションを扱ったとき、アーキテクチャは通常分離されていたので、データベース層でデータベース エンティティを扱うときは、エンティティを直接操作していました。ただし、GUI でエンティティにアクセスする必要がある場合は、エンティティのデータ転送オブジェクト (DTO) を作成し、それを GUI レイヤーで使用します。

iOS アプリケーションで推奨されるアプローチは何ですか?

一例として、Core Data からフェッチして ViewController 内のオブジェクトを取得し、その結果を ViewController 内の TableView に表示します。NSManagedObject結果を表示する前に s を DTO に変換する必要がありますか?

4

1 に答える 1

3

iOS アプリケーションで推奨されるアプローチは何ですか? 結果を表示する前に、NSManagedObjects を DTO に変換する必要がありますか?

いいえ、必要ありません。管理対象オブジェクトは、すでにデータベース エンティティをラップする (ジェネリック) オブジェクトです。-valueForKey: 呼び出しを使用して、管理対象オブジェクトのプロパティ (つまり、エンティティの属性) にアクセスできます。ただし、エンティティに合わせて NSManagedObject をサブクラス化することをお勧めします。Xcode には、サブクラスを自動的に生成するオプションがあります (エディター -> NSManagedObject サブクラスを生成)。そうすれば、エンティティの独自のサブクラス オブジェクトを取得し、ドット表記を使用してそれらのプロパティにアクセスできます。オブジェクトをフェッチするときは、結果をそのサブクラスの型にするだけです。

エンティティ オブジェクトにカスタム メソッドを追加する場合は、管理対象オブジェクトのサブクラスにカテゴリを作成する必要があります。これは、db スキームを変更し、xcode にサブクラスを再作成させる必要がある場合、完全に上書きされ、カスタム メソッドが失われるためです。

于 2013-05-03T09:18:59.133 に答える