2011-12-23 40 views
0

我只是想從一個文本文件中的目標C.閱讀閱讀從目標C文件

這裏是我的代碼:

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    NSString* path = [[NSBundle mainBundle] pathForResource:@"Pie" ofType:@"txt"]; 
    NSString* content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL]; 
    NSLog(@"%@",content); 
    [pool drain]; 
    return 0; } 

的輸出中寫道:2011-12-23 15: 49:12.649 FileReader [1309:707](null)

我正在使用XCode 4.1。我使用包含「Pie.txt」文件>>添加文件到...。我也(不知道這是否有必要)添加文件使用Build Phases >>複製文件

謝謝。我一直在努力完成這一切,沒有運氣。我相當接近刮臉。這應該是一個非常簡單的任務。通過回答這個問題,請將皮膚從完全破壞中拯救出來。

+0

你的文件實際上包含什麼?它實際上是文本嗎?數據?另外,文本文件是如何格式化的? – 2011-12-23 22:11:52

+3

錯誤對象會給出更好的線索。這樣做:在'NSString * content ...'行之前,通過添加'NSError * error = nil;'來聲明NSError。然後,不要將'NULL'傳遞給'stringWithContentsOfFile:encoding:error',而是在它的位置傳遞'&error'。最後,在最後添加一個'NSLog(@「%@」,錯誤);併發布結果消息。 – sidyll 2011-12-23 22:13:51

+0

在您遵循sidyll的出色建議之後,您可能需要查看應用程序的捆綁包以確保您的文件被正確複製。 – Caleb 2011-12-23 23:34:01

回答

1

NSBundle計算的路徑在運行時與文件的實際位置不匹配。要解決此問題,請轉至複製文件構建階段並將目標更改爲產品目錄。另外,僅在安裝複選框時取消選中複製。進行這些更改後,您可能需要進行清理。當你構建和運行時,你的代碼應該可以工作。