2010-10-12 62 views
2

當前我試圖訪問使用3.2中引入的新iOS功能傳輸的文件。訪問使用iTunes傳輸的「私人文檔」文件夾中的文件

- (NSString *)getPrivateDocsDir { 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    documentsDirectory = [documentsDirectory stringByAppendingPathComponent:@"Private Documents"]; 

    NSError *error; 
    [[NSFileManager defaultManager] createDirectoryAtPath:documentsDirectory withIntermediateDirectories:YES attributes:nil error:&error]; 

    return documentsDirectory; 

} 


// and then in a method 
NSString *documentsDirectory = [self getPrivateDocsDir]; 
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error]; 

的問題是,這工作正常在模擬器,但在我的iPhone,該files數組爲空。

任何想法如何直接訪問此目錄?

回答

2

Library-Directory無法通過iTunes訪問,而「Private Documents」位於此庫目錄內。 私人文件,顧名思義,是私人的。他們故意無法通過iTunes訪問。

如果您要訪問的文件目錄(這是通過iTunes訪問)替換此

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES); 

與此:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

編輯: 訪問這樣的文件。

- (NSString *)documentsDirectory { 
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
} 

NSString *documentsDirectory = [self documentsDirectory]; 
NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error]; 
+0

如果不在私人文件中,那麼存儲的傳輸文件在哪裏呢? http://cl.ly/bfe32afa6e272ebc5d70 – choise 2010-10-12 18:37:51

+0

他們在文檔目錄中。無論你從哪裏得到私人東西,它都被用於完全不同的事情。 – 2010-10-12 18:41:40

+0

感謝這工作很好。是一個教程,不知道。 – choise 2010-10-12 18:46:40