2009-07-18 49 views
2

我發現了幾個代碼片斷,描述瞭如何將數據寫入用戶的應用程序Documents文件夾。但是,當我在iPhone模擬器中試用這個時,沒有創建文件。我叫爲什麼我不能將文件寫入我的應用程序的Document目錄?

[NSFileManager isWritbleAtPath:<my document folder>]

,它返回0(假)。我是否需要使該文件夾明確可寫,如果是,我該怎麼做?

回答

0

感謝您的指點。因此,在通過一些文檔辛苦工作之後,我發現我做錯了:試圖保存一個NSArray,它不是由NSDictionary,NSArray或NSString等基本數據類型組成的。我試圖保存一個MPMediaItems數組(從SDK 3.0+中的MediaKit框架)。

2

iPhone模擬器應該能夠寫入整個磁盤。我的應用程序經常將測試文件轉儲到啓動卷的根級別(使用[NSData's writeToPath:@"/test.jpg" atomically:NO])。

您確定您已經正確確定了文檔文件夾的路徑嗎?您需要展開路徑中的代字號。以下是我的應用程序用於將文檔放入文檔文件夾的代碼。我不認爲有更多的設置參與!

brushesDir = [[@"~/Documents/BrushPacks/" stringByExpandingTildeInPath] retain]; 
// create brush packs folder if it does not exist 
if (![[NSFileManager defaultManager] fileExistsAtPath: brushesDir]) 
      [[NSFileManager defaultManager] createDirectoryAtPath:brushesDir withIntermediateDirectories:YES attributes:nil error:nil]; 
+0

我很懷疑。我會試試這個。謝謝! – casademora 2009-07-18 11:47:53

1
NSLog(@"writable: %d", [[NSFileManager defaultManager] isWritableFileAtPath:NSHomeDirectory()]); 

這在控制檯上打印1。

你是不是要調用isWritableAtPath或isWritableFileAtPath方法?你是否打算在課程本身或其默認實例上調用它?

+0

我試過了,它返回0.這是我想知道我在做什麼錯 – casademora 2009-07-18 11:46:32

0

我在寫入NSBundle的文件中遇到了一個微不足道的問題。我有一個要求,一旦應用程序啓動,需要使用服務器更新文本文件,並且它與模擬器一起運行良好,但與設備無關。後來我發現我們沒有使用NSBundle的寫入權限。將文件複製到NSBundle的Documents目錄中並用於我的目的解決了我的問題。我用: [myPlistData writeToFile:fileName atomically:NO];

相關問題