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
、すべての具体的なフォルダー タイプ ( DefaultFolder
、SmartFolder
、およびFolder
) がそのコンテンツを簡単に取得できるようにしました。これは、Folder エンティティがエンティティと持つ関係と一致しItem
ます。items
ただし、アクセサーを に実装することはできません。これは、コア データによってエンティティAbstractFolder
に提供される生成されたアクセサーをオーバーライドするためです。Folder
すべての具体的なフォルダーが実装するプロトコルの一部にすることを考えましたが、それは継承の目的を無効にしているようです。
だから私は、メーリングリストの集合的な知恵にこれを開きます。この構造をモデル化するより良い方法はありますか? 似たような構造のアプリに取り組んだ人はいますか? 何が役に立ちましたか?