面试题答案
一键面试- 发送网络请求并获取数据:
NSURL *url = [NSURL URLWithString:@"your_api_url"]; NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (error) { // 处理请求错误 NSLog(@"请求错误: %@", error); return; } if (!data) { NSLog(@"没有接收到数据"); return; } // 处理接收到的数据 NSError *jsonError; id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; if (jsonError) { // 处理JSON解析错误 NSLog(@"JSON解析错误: %@", jsonError); return; } // 正确解析JSON数据,这里jsonObject就是解析后的对象 NSLog(@"解析后的JSON数据: %@", jsonObject); }]; [task resume];
- 代码解释:
- 首先创建一个
NSURL
对象,指定请求的URL。 - 使用
NSURLSession
的dataTaskWithURL:completionHandler:
方法创建一个数据任务,在completionHandler
中处理请求的结果。 - 如果
error
不为空,说明请求过程中出现错误,直接记录错误并返回。 - 如果没有接收到数据(
data
为空),记录并返回。 - 使用
NSJSONSerialization
的JSONObjectWithData:options:error:
方法解析接收到的NSData
数据为JSON对象。如果解析过程中出现错误,记录错误并返回。如果解析成功,jsonObject
就是解析后的JSON对象,可以根据实际需求进一步处理。
- 首先创建一个