2013-03-01 68 views
0

我想從一個目錄中獲取.caf文件,然後將它們放入UIPickerView,以便每次點擊時都可以播放它們。使用文檔中的音頻文件填充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); 

有人可以幫助我嗎?

如果我使用覆蓋作爲數組,它會將文件的名稱放在選取器視圖中嗎?

回答

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作爲基礎數據來實現你UIPickerViewDelegate/UIPickerViewDataSource方法。