2010-04-25 87 views
5

我有下面這段代碼:閱讀文本文件 - iPhone SDK

NSString *fileName = [[NSUserDefaults standardUserDefaults] objectForKey:@"recentDownload"]; 
    NSString *fullPath = [NSBundle pathForResource:fileName ofType:@"txt" inDirectory:[NSHomeDirectory() stringByAppendingString:@"/Documents/"]]; 
    NSError *error = nil; 

    [textViewerDownload setText:[NSString stringWithContentsOfFile:fullPath encoding: NSUTF8StringEncoding error:&error]]; 
  • textviewerdownload是顯示該文件中的文本textview。實際的文件名稱存儲在名爲recentDownloadNSUserDefault中。

  • 當我建立這個,我點擊這是button,這是我的申請crashes

  • 有沒有什麼語法錯誤或只是簡單的錯誤?

+0

如果語法有問題,您的代碼將無法編譯;你將無法進入運行階段並看到它崩潰。要調試崩潰,請使用調試器;它應該告訴你你是如何墜毀和在哪裏。 – 2010-04-26 05:49:40

回答

9

NSBundle類用於您的應用程序包內找到的東西,但文件目錄是包外,所以這樣你正在生成的路徑將無法正常工作。試試這個:

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

NSString *fullPath = [[paths lastObject] stringByAppendingPathComponent:@"recentDownload.txt"]; 
+0

好的,我改變了一些編碼..我的應用程序仍然崩潰..這是我的IBAction下的代碼:http://www.heliotop.org/code.rtf 另外我將如何做if語句,其中如果最近的文件不是擴展名爲「txt」的文件,它會返回,如果是則導致操作。 – lab12 2010-04-25 21:07:49

6
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:@"myfile.txt"]; 

    if (![[NSFileManager defaultManager] fileExistsAtPath:myPathDocs]) 
    { 
     NSString *myPathInfo = [[NSBundle mainBundle] pathForResource:@"myfile" ofType:@"txt"]; 
     NSFileManager *fileManager = [NSFileManager defaultManager]; 
     [fileManager copyItemAtPath:myPathInfo toPath:myPathDocs error:NULL]; 
    }  

    //Load from File 
NSString *myString = [[NSString alloc] initWithContentsOfFile:myPathDocs encoding:NSUTF8StringEncoding error:NULL]; 

這爲我工作

不管怎麼說,謝謝大家..

2

對於讀/從文本文件檢查這個url寫。

+0

確保在您的info.plist中將布爾標誌「UIFileSharingEnabled」設置爲「YES」。 – msgambel 2012-03-31 22:47:40