我已经从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)。
我有点绝望地解决这个问题,非常感谢任何帮助。
干杯
答案 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