0

AUDIOクラスがあります。このオーディオには、SOUND_AサブクラスとSOUND_Bサブクラスがあります。これはすべて正しく行われ、正常に機能しています。

別のモデルがあり、それをPLAYLIST_JOINと呼びます。これには、(現実の世界では)SOUND_AとSOUND_Bを含めることができるため、AUDIOとPLAYLISTの関係を与えます。

これはすべてアプリで機能します。

私が今抱えている問題は、NSPredicateを使用してPLAYLIST_JOINテーブルをクエリすることです。私がやりたいのは、述語に2つのキーを指定して、正確なPLAYLIST_JOINアイテムを見つけることです。

sound_a._sound_a_id = %@ && playlist.playlist_id = %@

sound_b.sound_b_id = %@ && playlist.playlist_id = %@

主な問題は、テーブルにはsound_aandsound_bが格納されていないが、格納されているため、audioこの構文を使用できないことです。同じ_id属性名を使用するようにsound_aとsound_bを再編成するオプションがないので、これを行うにはどうすればよいですか?

メソッドを述語に渡すことはできますか?このようなもの:

[audio getID] = %@ && playlist_id = %@

4

1 に答える 1

1

少し複雑になりますが、述語に3番目の条件を追加する必要があります。

(entity.name = sound_a && _sound_a_id = %@ && playlist.playlist_id = %@) && (entity.name = sound_b && sound_b_id = %@ && playlist.playlist_id = %@)

これは、オーディオアブストラクトに対してクエリを実行し、サブクラスを返すように指示していることを前提としています。条件は左から右にチェックされるため、最初の条件が失敗した場合、_sound_a_idが存在しないため、条件は先に進み、エラーをスローしません。

最初の条件はNSEntityDescription、の一部であるを参照することでありNSManagedObject、そのname属性は単なる文字列です。

于 2010-05-07T03:19:41.463 に答える