如何使用stringWithContentsOfURL:encoding:error:?

Pie*_*nan 14 iphone cocoa-touch objective-c

我试图使用initWithContentsOfURL:encoding:error:像这样:


NSURL *url = [[NSURL alloc] initWithString:@"http://my_url.com/my_file.xml"];
NSError *error = nil;
NSString *my_string = [[NSString alloc] initWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:&error];

我得到一个空的my_string变量.

我尝试了initWithContentsOfURL:方法(在iOS 2.0中已弃用),我得到了我的页面内容.但我仍然需要指定一种编码语言.

怎么了 ?

谢谢 :)

Mat*_*uch 33

您的文件的编码可能不是UTF8.

如果您不知道文件的编码,可以尝试以下方法:

- (id)initWithContentsOfURL:(NSURL *)url usedEncoding:(NSStringEncoding *)enc error:(NSError **)error
Run Code Online (Sandbox Code Playgroud)

你必须传递指向NSStringEncoding的指针,就像你做错误一样:

NSURL *url = [[NSURL alloc] initWithString:@"http://my_url.com/my_file.xml"];
NSError *error = nil;
NSStringEncoding encoding;
//NSString *my_string = [[NSString alloc] initWithContentsOfURL:url
//                                                     encoding:NSUTF8StringEncoding
//                                                        error:&error];
NSString *my_string = [[NSString alloc] initWithContentsOfURL:url
                                                 usedEncoding:&encoding 
                                                        error:&error];
Run Code Online (Sandbox Code Playgroud)

在此之后,您的编码将出现在编码变量中.如果你对使用的编码不感兴趣,我想你也可以传递NULL作为指针.