2011-02-01 3 views
1

.plistファイルのデータから構築された配列でfilteredArrayUsingPredicateを使用しようとしています。どういうわけか、私の配列をフィルタリングするようなことはありません。filteredArrayUsingPredicateが機能しません

これは私の配列が構築されている方法です。

DrillDownAppAppDelegate *AppDelegate = (DrillDownAppAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    self.tableDataSource = [AppDelegate.data objectForKey:@"Rows"]; 
    copyDataSource = [ tableDataSource mutableCopy]; 

、その後、私の述語はこのように書き、

NSString *searchFor = search.text; 
[tableDataSource release]; 
tableDataSource = [copyDataSource mutableCopy]; 
if ([searchFor length] > 0) { 
NSLog(@"array = %@",tableDataSource); 
NSPredicate *pred = [NSPredicate predicateWithFormat:@"Self beginswith[c] %@",searchFor]; 
    [tableDataSource filteredArrayUsingPredicate:pred]; 
} 

答えて

6
  • -[NSArray filteredArrayUsingPredicate:]は結果
  • が含まれてい新しい配列を返します。 -[NSMutableArray filterUsingPredicate:]は、インプレースフィルタです。

ので、代わりに次のコマンドを使用します。

[tableDataSource filterUsingPredicate:pred]; 
1

私はあなたがpredicateWithFormatに文字列あなたsubsitutingラウンド引用符が必要だと思う:方法。すなわち、

NSPredicate * pred = [NSPredicate predicateWithFormat:@ "self beginswith [c] \"%@ \ ""、searchFor];

キーワード「self」のように、単語「self」をすべて小文字として使用してみてください。オブジェクトのインスタンスは、実際には小文字で開始する必要があります。たとえば、「appDelegate」です。

関連する問題