Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当从长度为4000+;的NSData转换时,NSMutableString变为(null);_Iphone_Ios_Nsstring_Nsurlconnection_Nsdata - Fatal编程技术网

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

Iphone 当从长度为4000+;的NSData转换时,NSMutableString变为(null);,iphone,ios,nsstring,nsurlconnection,nsdata,Iphone,Ios,Nsstring,Nsurlconnection,Nsdata,我正在向某个服务器发送XML请求,并使用NSURLConnection从中获取一些响应数据: -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSMutableString *receivedString = [[NSMutableString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding];

我正在向某个服务器发送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等)时,输出显示我的receivedString变为null


当字符串的长度变大时,如何将数据保存到字符串中?谢谢。

您确定您的数据是用
NSUTF8StringEncoding
编码的吗?再次检查返回给您的数据
initWithData:encoding:
如果编码未正确表示数据,则返回
nil

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


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

如果将NSMutableString更改为NSString,会发生什么?可能与此有关?它是否将长度打印为10000,然后将字符串打印为null?
(receivedString==nil)
是否计算为是?如果您记录
[receivedString substringToIndex:500]?这是否也显示为空或实际文本?@JamesPaolantonio,不幸的是相同的。@SVD,不,我尝试了所有类型的编码…是的!例如,如果我发送一个请求,该请求使用短长度的NSData进行响应,它将XML提供给输出:
65538Status unknown 65538,将其添加到StatusStringConvertor.cpp.-1-1-1get_request
,这是不同的。您需要实际查看长数据项以确定坏字节。我保证这不是长度本身。你可以创建比10000大得多的字符串。你说得对!我用追踪器检查过。如果响应的大小超过4k,服务器会使用zip压缩响应。非常感谢。很高兴你有你的答案。顺便说一句,这是我最喜欢的两个词——特别是在我的孩子很少使用的情况下。