5

iOS 5での作業私は、ドキュメントディレクトリからファイル名のリストを読み取りました。この配列は「ファイルリスト」と呼ばれます。拡張子のないファイル名のリストを取得しようとしています。私のリストの最後の名前だけが拡張子を削除しています。何か案は?

- (IBAction)getFile:(id)sender
{  
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory =[paths objectAtIndex:0];
    NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];
    NSString *names = [[[fileList valueForKey:@"description"]componentsJoinedByString:@"\n"]stringByDeletingPathExtension];

    NSLog(@"File Name Is \n%@",names);    
    showFile.text = names; 
}
4

2 に答える 2

10
- (IBAction)getFile:(id)sender
{  
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory =[paths objectAtIndex:0];
    NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];
    NSString *names = nil;
    for (NSString *name in fileList){
        if (!names) names = [[name lastPathComponent] stringByDeletingPathExtension];
        else names = [names stringByAppendingFormat:@" %@",[[name lastPathComponent] stringByDeletingPathExtension]];
    }
    NSLog(@"File Name Is \n%@",names
}
于 2012-07-21T22:04:21.547 に答える
2

配列の説明を使用して完全な配列の内容を取得しているように見えますが、個々のファイルからではなく全体のファイル拡張子を削除しています。最初にファイル名の拡張子を削除してみてください。

NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[fileList count]];
[fileList enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    [newArray addObject:[obj stringByDeletingPathExtension]];
}];
NSString *names = [newArray componentsJoinedByString:@"\n"];
showFile.text = names;

このenumerateObjectsUsingBockメソッドは、配列内の各項目を処理します。コード ブロックで、そのオブジェクトを取得し、パス拡張子を削除して、新しい配列に追加します。完全な配列が処理された後、componentsJoinedByString各ファイル名の間に改行を追加するために使用できます。

于 2012-07-21T22:13:24.683 に答える