2011-03-02 31 views
4

ダイナミックに名前が付けられた.csvファイルを作成するプログラムを作成しようとしていますが、後日実行する必要があります。私がしようとしているのは次のとおりです。iPhone SDKでワイルドカードを使用したファイル名を検索

これらのファイルが存在するかどうかを知るアルゴリズムを実行したいと思います。たとえば、動的に生成され、ファイル名に追加されている番号を示す##とfoobar ##。csvのようなファイルに動的に名前を付けると、foobar ##。csvファイルが存在するかどうかにかかわらず使用された番号。通常、私は、このようなコードの行を使用します。

NSString *dataFileName = [[self documentPath] stringByAppendingPathComponent:@"foobar01.csv"]; 

今私は、それぞれの値によってそのサイクルのループを使用し、1が発見された場合はブール値をトリップ、私はこれはとしてベストプラクティスではありません知っていますユーザーが使用できるファイル名の数を制限します。このような検索で何らかのワイルドカードを使うことができるかどうかについての洞察は高く評価されます。

また、プログラムで検出された.csvファイルを削除するメソッドを作成したいと思いますが、上記のアルゴリズムを解決するために使用されたメソッドを削除にも使用できると仮定しています。

答えて

2

NSFileManagerscontentsOfDirectoryAtPath:error:の方法をご覧ください。それは問題のディレクトリのすべてのオブジェクト(ファイルとディレクトリ)の名前を含む文字列で配列を返します。

次に、その配列を列挙し、それらの文字列の "foobar"の出現をチェックできます。すぐに見つかったファイルに何かをするか、後の処理のために別の配列に "正の"ファイル名を格納します。

+0

は、私が今日に後で見てみましょう。あなたの時間をありがとう。 – MarcZero

0

他のポスターのサンプルコードは、多かれ少なかれと言われています。

+(NSMutableArray*) allocLocalFiles 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSError * error = nil; 
    NSArray *origContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory 
                       error:&error]; 
    NSMutableArray * files = [[NSMutableArray alloc]init]; 

    for (NSString* file in origContents) { 
     NSString * ext = [file pathExtension]; 
     if ([ext compare:@"csv"]==0 && something_else) 
     { 
      [files addObject: 
      [NSString stringWithFormat:@"%@/%@",documentsDirectory,file]]; 
     } 
    } 
    return files; 
} 
+0

ありがとうございます。私は今日これを後で見ていきます。 – MarcZero

5

ワイルドカード一致 ではなく、比較演算子のように使用できるワイルドカード文字列にクエリを使用して一致し、「*」(マッチゼロ以上の文字)またはを含めるには、「?」(正確に一致1文字)などワイルドカードは以下の通り:

NSString *match = @"imagexyz*.png"; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", match]; 
NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate]; 

http://useyourloaf.com/blog/2010/7/27/filtering-arrays-with-nspredicate.html

関連する問題