NSMutableData到NSString给出nil

时间:2011-11-14 22:25:29

标签: iphone objective-c

我正在使用我的应用程序NSURLConnection获取网站的网页。

这是我怎么称呼NSURLConnection

NSURL *url = [NSURL URLWithString:@"http://jokes.moment.co.il/default.asp?s1=4&s2=0"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection connectionWithRequest:request delegate:self];

这就是我追加我得到的数据的方式:

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    if (receivedData)
    {
        [receivedData appendData:data];
    }
    else 
    {
        receivedData = [[NSMutableData alloc] initWithData:data];
    }
}

这就是我尝试将其转换为NSString的方式:

-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *string = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
}

receivedData是47586字节,当我进行转换时,字符串是nil

2 个答案:

答案 0 :(得分:6)

快速查看您网址的内容,可以看出内容类型是ISO-8859-1

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

尝试将对initWithData的调用更改为...

[[NSString alloc] initWithData:nsdata encoding:NSISOLatin1StringEncoding];

答案 1 :(得分:1)

很可能,收到的字符串无法有效编码为NSUTF8StringEncoding。

您可能需要将字符串写入文件系统,然后使用NSString方法之一通过NSError**参数描述任何转换错误,以了解确切的错误。