2011-11-09 44 views
1

我已經從XCODE 4升級到4.2,現在我有問題。無法在XCODE 4.2中讀取文件,在4.0中工作?

下面的代碼工作前4.2讀取文件中的 「文件路徑」:

// Fill myString with questions from the .txt file and then read .txt file 
NSString *filePath = whatFile; 
NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath]; 

// Load array 
NSArray* myArray = [myString componentsSeparatedByString:@"\r"]; 
NSLog (@"\n \n Number of elements in myArray = %i", [myArray count]); 

隨着4.2 「initWithContentsOfFile」 在下面的代碼行被棄用:

NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath]; 

...並應根據手冊更換爲以下內容:

NSString *myString = [NSString stringWithContentsOfFile:filePath encoding: NSUTF8StringEncoding error:&err]; 

我不能通過替換代碼行來獲取它以讀取同一文件中的記錄。順便說一句,我已經定義了&犯錯。

當我NSLog myString我得到(null)。

我有點絕望解決這個問題,非常感謝任何幫助。

乾杯

+0

又是什麼錯誤對象告訴你嗎? – Abizern

回答

1

NSLog如果有錯誤的err變量。另外NSLogfilePath

也許編碼不是UTF-8,你確定編碼嗎?

最好的非UTF-8編碼賭注是NSMacOSRomanStringEncoding,它支持8位字符。

1

嘗試:

NSError* error = nil; 
    NSStringEncoding encoding; 
    NSString *fileContent = [NSString stringWithContentsOfFile:filePath usedEncoding:&encoding error:&error]; 

如果不工作,嘗試在你的代碼:NSASCIIStringEncoding

0

文件可能不包含UTF8編碼的字符串。請參閱apple的文檔,它有一個讀取不知道編碼的文件的例子:Reading data with an unknown encoding

您需要使用[string|init]WithContentsOfFile:usedEncoding:error方法,如果失敗了,還有幾件事情可以在最後呈現錯誤消息給用戶(例如,嘗試讀取它作爲NSAttributedString)。

例如,你可以這樣做:

// Fill myString with questions from the .txt file and then read .txt file 
NSString *filePath = whatFile; 
NSStringEncoding encoding; 
NSError *error; 
NSString *myString = [[NSString alloc] initWithContentsOfFile:filePath usedEncoding:&encoding error:&error]; 

if (!myString) { 
    myString = [[NSString alloc] encoding:NSUTF8StringEncoding error:&error] 
} 

if (!myString) { 
    myString = [[NSString alloc] encoding:NSISOLatin1StringEncoding error:&error] 
} 

if (!myString) { 
    NSLog(@"error: %@", error); 
    return; 
} 


// Load array 
NSArray* myArray = [myString componentsSeparatedByString:@"\r"]; 
NSLog (@"\n \n Number of elements in myArray = %i", [myArray count]); 
相關問題