从长度为4000+的NSData转换时,NSMutableString变为(null)

时间:2012-09-07 21:39:21

标签: iphone ios nsstring nsurlconnection nsdata

我正在向某个服务器发送XML请求,并使用NSURLConnection从中获取一些响应数据:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection  
{  
    NSMutableString *receivedString = [[NSMutableString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding];       
    NSLog(@"Size of DATA: %d",[_receivedData length]);  
    NSLog(@"Body: %@", receivedString);  
}  

当我的数据长度大约为4000时 - 我通常可以在输出中看到接收到的数据。但是当数据长度变大(6000,10000等)时,Output显示我的receivedString变为空!

如果长度变得更大,我怎样才能将数据保存到字符串中?谢谢。

1 个答案:

答案 0 :(得分:2)

您确定您的数据是使用NSUTF8StringEncoding编码的吗?仔细检查返回给您的数据。如果数据未通过编码正确表示,initWithData:encoding:将返回nil

测试这个的一个简单方法是使用相同的数据对象,并创建一个包含相同数据的增量部分的字符串,直到它失败,然后查看导致它失败的字节。

我敢打赌一块南方炸鲶鱼你在这个数据中有一个不正确(或不匹配)的编码字节。