1

iTunes に似たマスター/ディテール インターフェイスを持つアプリを作成しています。これは、iTunes のプレイリストと同じデータ階層を持っています (ただし、単純にするために「プレイリスト」のグループを許可していません)。つまり、ユーザーが手動で追加するアイテムのみが含まれる通常のプレイリストがあります。ユーザー定義の述語に一致するすべてのアイテムを表示するスマート プレイリストがあります。最後に、ユーザーがまったく編集できない「プレイリスト」がいくつかあります (私はこれらを と呼びますDefaultFolders) が、それらの述語がすべてを表示することであるという点で、本質的には洗練されたスマート プレイリストにすぎません。これらは、iTunes の「ライブラリ」および「ムービー」セクションに似ています。

この構造を再現しようとして、次の階層を作成しました (コア データ内): http://gallery.me.com/davedelong#100084/Screen%20shot%202009-11-07%20at%207.17 .53%20PM&bgcolor=black (うまくいけば自明です)

ただし、このアプリに慣れるにつれて、この構造は少し面倒になりました。たとえば、AbstractFolder クラスに というアクセサーを定義して-(NSSet *)items、すべての具体的なフォルダー タイプ ( DefaultFolderSmartFolder、およびFolder) がそのコンテンツを簡単に取得できるようにしました。これは、Folder エンティティがエンティティと持つ関係と一致しItemます。itemsただし、アクセサーを に実装することはできません。これは、コア データによってエンティティAbstractFolderに提供される生成されたアクセサーをオーバーライドするためです。Folderすべての具体的なフォルダーが実装するプロトコルの一部にすることを考えましたが、それは継承の目的を無効にしているようです。

だから私は、メーリングリストの集合的な知恵にこれを開きます。この構造をモデル化するより良い方法はありますか? 似たような構造のアプリに取り組んだ人はいますか? 何が役に立ちましたか?

4

2 に答える 2

0

私はこの回答で詳しく説明する構造を考え出しました:https ://stackoverflow.com/questions/1812311#1812924

于 2009-11-28T16:23:53.370 に答える
0

申し訳ありませんが、コアデータはあまり使用していませんが、AbstractFolderにアイテムアクセサーを実装する必要がある理由がわかりません。ヘッダーのカテゴリに貼り付けて、わざわざ実装することはできませんか?これは、抽象メソッドの標準的なアプローチです。

たとえば、AbstractFolder.hでは、次のようになります。

@interface AbstractFolder (Abstract)

NSSet *items;

@end

そうすれば、わざわざどこにでも実装する必要はありません。これにより、サブクラスの実装が強制的に使用されます。

于 2009-11-08T08:08:27.590 に答える