2011-10-24 2 views
0

は、私はIOSで次のコアデータ構造を持っていると言う:NSPredicateは特定の子を持つすべての親を検索しますか? (IOS)

Parent1 
    Child1.1: Text='A', Number=1 
    Child1.2: Text='B', Number=1 
Parent2 
    Child2.1: Text='B', Number=1 
    Child2.2: Text='A', Number=2 
Parent3 
    Child3.1: Text='B', Number=2 
    Child3.2: Text='A', Number=1 

私は上記のすべてのテキスト=「A」との子供を持つ親や数= 1(親1とParent3をretriveしたいです例)。 - 私がANYキーワードに続く括弧を持つことができないようです

ANY (child.Text = 'A' AND child.Number = 1) 

しかし、これは動作しません:

基本的に私は必要なものは次のようになります親エンティティの述語です。

次は(それが有効だにもかかわらず)のいずれかに良いではありません。

ANY child.Text = 'A' AND ANY child.Number = 1 

それは同様Parent2を返すため。

述語でこれを行う方法はありますか、それともプログラムで行う必要がありますか(ANYキーワードを使用せずに子供だけを検索し、後ろの関係から親の配列を構成するなど)

答えて

0

述語では、等号に==を使用する必要があります。

あなたはまたNSPredicateが==する=を変換

 

NSMutableArray* predicatesToCombine = [[NSMutableArray alloc]init]; 

[predicatesToCombine addObject:@"child.Text == 'A'"]; 
[predicatesToCombine addObject:@"child.Number == 1"]; 

NSPredicate* predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicatesToCombine]; 

... 

[predicatesToCombine release]; 

+1

のように、ANDとORと述語の部品を組み合わせるためのNSCompoundPredicateで見ることができ、どちらも同じです。また、私はすでにNSCompoundPredicateを使用しています(単純化した例)、問題とは関係がありません。簡単な述語をANDまたはORと組み合わせるか、単純述語をNOTで置きます。私の問題はANYのキーワードの後に​​括弧が付き、括弧の中には入りません。 –

+0

@AmiramStark、「単純化された例」ではなく、実際のコードを表示することでより良い回答を得ることができます。そうでなければ、すでに試みていることを試してみる時間を無駄にします。 – jrturton

+0

jrturonでは、実際のコードと単純化されたコードの間に何の違いもない場合、何十行もの複雑なコードを表示することはありません。二重等号は正式なNSPredicate形式の文字列構文には関係なく、複合述語はANYキーワードに関して何もしません。簡略化されたコードは実際の問題に集中するのに役立ち、もっと良い方法だと私は信じています。 –

関連する問題