[number]_[number].png という形式のファイル パスの配列をフィルター処理して、特定の番号 (1 など) で始まるパスのみを取得しようとしています。
これは私が試したものです:
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"self MATCHES '%@/1_[0-9]+.png'",
[[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"Images"]];
NSArray *files = [[[NSBundle mainBundle] pathsForResourcesOfType:@"png"
inDirectory:@"Images"]
filteredArrayUsingPredicate:predicate];
空の配列を取得します。MATCHES の代わりに LIKE を使用してみました。[cd] フラグを使用してみましたが、問題ありません。それでも、私は常に空の配列を取得します。それは正規表現で何かですか?
編集:
predicateWithFormat に問題があったようです。
フォーマット文字列に続いて引数を取得して、フォーマット文字列に置き換えると思いました。そのようには機能しません。引数は無視され、フォーマット文字列では何も置換されません。
したがって、解決策は次のとおりです。
NSPredicate *predicate = [NSPredicate predicateWithFormat:
[NSString stringWithFormat:
@"self MATCHES '%@/1_[0-9]+.png'",
[[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"Images"]]];
NSArray *files = [[[NSBundle mainBundle] pathsForResourcesOfType:@"png"
inDirectory:@"Images"]
filteredArrayUsingPredicate:predicate];