我正在读一个用UTF8编码的txt文件.
我现在正在阅读该文件.我有这样的话:
- (NSString *) readFromFile {
NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt",
documentsDirectory];
return [[NSString alloc] initWithContentsOfFile:fileName
usedEncoding:NSUTF8StringEncoding
error:nil];
}
Run Code Online (Sandbox Code Playgroud)
我在最后一行有这个错误:
不兼容的整数到指针转换发送int到NSUTF8StringEncoding类型的参数*
为什么?
这里的关键是"使用d编码" 中的" d ".
该参数用于将信息传递给调用者关于用于读取文件的编码.
这意味着它是一个NSString类,它通知调用者它用于从文件中的原始数据创建对象的编码 - 而不是可以指示类使用哪种编码的调用者.
要获取此信息,您需要声明一个变量并传递对它的引用,以便NSString类对象可以将信息放入其中,以便稍后在需要时阅读.
NSStringEncoding enc;
NSString *result = [[NSString alloc] initWithContentsOfFile:fileName
usedEncoding: &enc
error:nil];
// Do something with the information about the encoding used
if ( enc == NSUTF8StringEncoding ) {
// ...
}
return result;
Run Code Online (Sandbox Code Playgroud)