不兼容的整数指针转换? 什么?

我正在阅读用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]; } 

最后一行有这个错误:

不兼容整数指针转换发送int到NSUTF8StringEncodingtypes的参数*

为什么?

这里的关键是“使用d编码”中的“ d ”。

该参数用于将信息传递给调用者关于用于读取文件的编码。

这意味着它是NSString类,它通知调用者从文件中的原始数据创build对象时使用哪种编码 – 而不是调用者可以指示类使用哪种编码。

为了得到这个信息,你需要声明一个variables并传递一个引用,这样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; 

使用:
initWithContentsOfFile:encoding:error:

 initWithContentsOfFile:usedEncoding:error: Returns an NSString object initialized by reading data from the file at a given path and returns by reference the encoding used to interpret the characters. - (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error Parameters path A path to a file. enc Upon return, if the file is read successfully, contains the encoding used to interpret the file at path. error If an error occurs, upon returns contains an NSError object that describes the problem. If you are not interested in possible errors, pass in NULL. 

这是从文档:-)

所以基本上,就像@Monolo所说的,这是用来返回给你的编码types,而不是设置它。 如果你想设置它,你必须使用: - (id)initWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error