2012-04-02 11 views
0

"some"文字列を含むNSMutableArray要素をフィルタリングしたいと思います。 ListArchivesは文字列要素で満たされ、listFilesはフィルタリングされたものでなければなりません。 XCodeは最後に投稿された行で警告を生成します。何が間違っているの?その他のNSMutableArrayの要素をフィルタリングする方法は?xcode filter NSMutableArray要素を文字列の内容で

NSString *match = @"some"; 
listFiles = [[NSMutableArray alloc] init]; 

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", match]; 

listFiles = [[listArchives filteredArrayUsingPredicate:sPredicate] mutableCopy]; 

答えて

4

は、たとえば、代わりにlikecontainsを使用してみてください。堅牢については

static int count = 0; 
NSArray *results = [NSArray arrayWithObjects:@"What was", @"What is", @"What will", nil]; 

NSString *targetString = @"What" 
for (NSString *strObj in results) 
{ 
    if ([strObj rangeOfString:targetString].location != NSNotFound){ 
     NSLog (@"Found: %@", strObj); 
     count = count + 1;    
    } 
} 
NSLog(@"There were %d occurence of %@ string",count,targetString); 
+0

よろしくお願いします。しかし、まだ警告を表示して、 "NSMutableArray _strongをNSArrayから代入するIncomptaibleポインタ型"。だから私はNSArrayはそれを解決するlistFilesを宣言すればlistFilesも変更可能にする他の方法はない? – Jaume

+0

@Jaumeこれは、フィルタリングされた配列がコンパイラに 'NSMutableArray'であると知られていないためです。最後の行の代わりにこれを試してください: '[listFiles setArray:[listArchives filteredArrayUsingPredicate:sPredicate]];' – dasblinkenlight

+0

ああ確かに!自分自身からの怠惰なコメント:)私はあなたの助けを本当に感謝します! – Jaume

2

を使用すると、演算子 'のような' として検索したい場合は、次のように

NSString *match = @"*some*"; 
listFiles = [[NSMutableArray alloc] init]; 

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF like[cd] %@", match]; 

listFiles = [listArchives filteredArrayUsingPredicate:sPredicate]; 
0
NSString *match = @"some"; 
listFiles = [[NSMutableArray alloc] init]; 
NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH[c] %@", match]; 
listFiles = [listArchives filteredArrayUsingPredicate:sPredicate]; 

を、これはSQLに仕える「のように」いくつかの何としてあなたを提供することができます検索: では、次の内容でNSArrayのを考えてみましょう。

関連する問題