2009-08-13 16 views
0

私は、アルバムと呼ばれるコアデータエンティティを持っています。アルバムにはソングエンティティ(曲と呼ばれる)との関係があり、ソングにはタグエンティティの任意の数(タグプロパティで)があり、タグには名前があります。 アルバムの曲にタグが含まれているかどうかを確認します。単一のNSPredicateを使用します。頭に浮かんだNSPredicatesと2対nの関係

アイデアた:

[NSPredicate predicateWithFormat: @"ANY (ANY songs).tags LIKE %@", someTagName]; 

しかし、これは(「書式文字列を解析できません」)、実行時にエラーが発生します。私は成功しなかった様々なバリエーションを試しました。

これを行う方法はありますか?

答えて

0

私はあなたが

[NSPredicate predicateWithFormat:@"ANY [email protected] LIKE %@", someTagName] 

をしたいと思いますset and array operators上のキー値プログラミングガイドセクションをご覧ください。

+0

本当にうまく聞こえましたが、試しましたが、もう一度やり直しています。これは通常、私にはしばしば起こることではありません... ***キャッチされていない例外 'NSUnknownKeyException'の理由によるアプリケーションの終了、理由: '[ valueForUndefinedKey:]:エンティティアルバムは、キー "曲。@ distinctUnionOfSets.labels"に対してキー値コーディングに準拠していません。 私はラウンドを試みましたが、@distinctUnionOfSetsを置くことができる場所を見つけられませんでした。 私は間違って何を手がかりですか? –

+0

@Julian申し訳ありませんが、これはテストなしで書いた私のせいです。私はコアデータプロジェクトを持っていないので、私は頭の上から取り組んでいます。 @distinctUnionOfSetsではなく@unionOfSetsを試しましたか?私はいつもこれらの集合演算子で少し苦労します。私はしばしば[album valueForKeyPath:@ "@ songs.tags"]のような行にブレークポイントを置き、その結果がデバッガにあるかどうかを確認する必要があります。それがセットのセットなら、@ unionOfSets.songs.tagsはそれを行うべきです。それが他のものなら、キーパスを適切に変更する必要があります。 –

0

単なる考えですが、iPhoneではLIKEを使用できません。私はBETWEENでうまくいきませんでしたが、うまくいきません。

タグには曲と多対多の関係はありませんか?そのようにモデル化されていれば、タグの曲を取得するだけで、プロパティタグにアクセスする必要があります。あなたがモデル化したやり方では、各曲(あなたのアプリでうまくいくかもしれません)ごとにタグを複製できるようです。