gpt4 book ai didi

iphone - 无法从 NSURLConnection 响应中解析 JSON 数据

转载 作者:行者123 更新时间:2023-11-28 20:30:53 25 4
gpt4 key购买 nike

我收到以下形式的服务器响应:

results are:{
AverageMark = 40;
"Grade A" = 10;
"Grade B" = 20;
"Grade C" = 30;
"Grade D" = 20;
MaxMark = 99;
MinMark = 44;
ProfileGrade = "";
ProfileMark = 1;
}

但是我无法将响应数据保存到数组中。这是我在 didReceiveResponse 中的代码:

    {    
NSString *jsonString = [[NSString alloc] initWithString:responseData];
NSArray *jsonResults = [jsonString JSONValue];
NSLog(@"results are:%@",jsonResults); //this log is shown above
for (int i=0; i<[jsonResults count]; i++)
{
NSDictionary *AllData=(NSDictionary *)[jsonResults objectAtIndex:i]; //Program is crashing here--//
NSMutableArray *DataArray=[[NSMutableArray alloc]init];
NSString *avgMarkString;
avgMarkString=(NSString *)[AllData objectForKey:@"MaxMark"];
[DataArray addObject:avgMarkString];
}
}

我想将响应数据保存到名为“DataArray”的数组中。但是程序崩溃了。我做错了什么?

最佳答案

-connection:didReceiveResponse: 中您可能还没有完整的数据。创建类型为 NSMutableData 的实例变量或属性,并初始化
中的数据 ivar 或属性-connection:didReceiveResponse: 如果您获得有效的状态码(200-299 之间应该没问题)。在 -connection:didReceiveData: 委托(delegate)方法中对数据对象使用 appendData:。终于在-connectionDidFinishLoading:中数据完整,可以解析成JSON了。

或者你可以只使用 AFNetworking图书馆。该库有一些方便的方法来处理 XML、JSON、图像等...

阅读以下页面以了解 AFNetworking 的功能:http://engineering.gowalla.com/2011/10/24/afnetworking/


一些示例代码来 self 自己的一个项目,用于使用 NSURLConnectionDelegate 方法使用队列进行下载。 URL Request 对象是一些 block “回调”的 NSURLConnection 的自定义子类:

#pragma mark - URL connection delegate

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

NSRange range = NSMakeRange(200, 99);
if (NSLocationInRange(httpResponse.statusCode, range));
{
self.data = [[NSMutableData alloc] init];
}
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_data appendData:data];
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// inform caller that download is complete, provide data ...

if (_request.completionHandler)
{
_request.completionHandler(_data, nil);
}

[self removeRequest:_request];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
DLog(@"%@", error);

// inform caller that download failed, provide error ...

if (_request.completionHandler)
{
_request.completionHandler(nil, error);
}

[self removeRequest:_request];
}

关于iphone - 无法从 NSURLConnection 响应中解析 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com