无法在XCODE 4.2中读取文件,在4.0中工作?

时间:2011-11-09 22:06:51

标签: iphone objective-c encoding nsstring

我已经从XCODE 4升级到4.2,现在我遇到了问题。

以下代码在4.2之前工作以读取“filePath”中的文件:

// 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];

我无法通过替换代码行来读取同一文件中的记录。顺便说一句,我已经定义了& err。

当我NSLog myString时,我得到(null)。

我有点绝望地解决这个问题,非常感谢任何帮助。

干杯

3 个答案:

答案 0 :(得分:1)

如果出现错误,请

NSLog err变量。另外NSLog filePath

也许编码不是UTF-8,你确定编码吗?

最佳非UTF-8编码赌注为NSMacOSRomanStringEncoding,支持8位字符。

答案 1 :(得分:1)

尝试:

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

如果不起作用,请尝试使用代码:NSASCIIStringEncoding

答案 2 :(得分:0)

该文件可能不包含UTF8编码的字符串。请参阅apple的文档,其中有一个读取您不知道编码的文件的示例:Reading data with an unknown encoding

您需要使用[string|init]WithContentsOfFile:usedEncoding:error方法,如果失败,您可以在最终向用户显示错误消息之前尝试更多内容(例如,尝试将其作为{{1}阅读})。

例如,你可以这样做:

NSAttributedString