0

ディレクトリから .caf ファイルを取得してから、それらを UIPickerView に入れて、各行がタップされたときに再生できるようにしようとしています。

これまでのところ、このコードはありますが、ファイルを配列に入れる方法がわかりません。

NSString *extension = @"caf";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *documentsDirectory14 = [documentsDirectory stringByAppendingPathComponent:@"/Family"];
NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectory14 error:&error];
NSMutableArray *cafFiles = [NSMutableArray arrayWithCapacity: [contents count]];

NSString *filename;
for (filename in contents)

    NSLog(@"filename;%@",filename);

{
    if ([[filename pathExtension] isEqualToString:extension])
    {

        [cafFiles  addObject: [NSMutableArray  arrayWithContentsOfFile:[documentsDirectory14 stringByAppendingPathComponent:filename]]];
    }
}    

 NSLog(@"jpegFiles;%@",cafFiles );

covers= [NSMutableArray arrayWithArray:cafFiles];{
    for (filename in cafFiles);
}
NSLog(@"%@", covers);

誰かがこれについて私を助けることができますか?

カバーを配列として使用すると、ファイルの名前がピッカー ビューに表示されますか?

4

1 に答える 1

0

実際のオーディオ データを読み込もうとしているように見えましたが、これはピッカー ビューには必要ありません。ファイルの名前が必要です。代わりに、あなたのコードに基づいた次のコードを試してください。

NSString *extension = @"caf";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *familyDirectory = [paths[0] stringByAppendingPathComponent:@"Family"];
NSArray *directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:familyDirectory
                                                                        error:NULL];
NSIndexSet *cafFileNameIndexes = [directoryContents indexesOfObjectsPassingTest:^BOOL(NSString *fileName, NSUInteger idx, BOOL *stop) {
    return [[fileName pathExtension] isEqualToString:extension];
}];
NSArray *cafFileNames = [directoryContents objectsAtIndexes:cafFileNameIndexes];

次に、基礎となるデータとして使用して/メソッドcafFileNamesを実装します。UIPickerViewDelegateUIPickerViewDataSource

于 2013-03-01T09:07:14.967 に答える