2016-05-10 6 views
0

その私のコード。配列には私はチームオブジェクトがあります。チームは選手との関係を持っているので、このrelathionshipでfiltrを欲し、選手とのチームだけがfullNameで疎遠になっているのを見つける。このNSPredicateフィルタリングNSArrayの

+0

は 'rel_Players' 1対多の関係ですか? – Avi

+0

はい。 1チームには多くの選手がいる。 –

答えて

0

を変更する方法ANYオペレータは動作するはずです:

NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"ANY rel_Players.fullName CONTAINS[c] %@" ,phrase]; 

いくつかの追加の発言を:

  • rel_プレフィックスは珍しく、不要である:複数形の選手は十分にあるとアンダースコアをすることができます新しい単語の先頭に大文字(ラクダの場合)が付いているため、省略してください。
  • このメソッドは、可変配列引数を取る必要はありません。これにより、ユースケースがNSMutableArrayの引数に制限されます。パラメータタイプをNSArray *に変更すると、NSArrayNSMutableArrayの両方のインスタンスを使用できます。
  • このメソッドはインスタンスコンテキストでは機能しません。selfへの1回のアクセスはありません。あなたはそれから機能を作ることができます - それを好むでしょう - それをNSArrayの方法にしてください。一緒にこれを取る

@interface NSArray(TeamPlayerAddition) 
-(NSArray *)teamsWithPlayerPharse:(NSString *)phrase 
@end 

@implementation NSArray(TeamPlayerAddition) 
-(NSArray *)teamsWithPlayerPharse:(NSString *)phrase 
{ 
    NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"ANY rel_Players.fullName CONTAINS[c] %@" ,phrase]; 
    return [self filteredArrayUsingPredicate:searchPredicate]; 
} 
@end 
+0

それは動作します! :) 本当にありがとう。 –

+0

ようこそ。 –

+0

NSArrayとは関係のない単一のクラスに関連するメソッドをNSArrayに追加するのはなぜですか? 'Team'にクラスメソッドとしてメソッドを追加します。 – Avi

関連する問題