MST

星途 面试题库

面试题:Objective-C网络请求中的数据解析

在Objective-C中使用NSURLSession进行网络请求,假设服务器返回的是JSON数据格式,描述一下如何正确解析返回数据并处理可能出现的错误。请给出关键代码片段。
46.3万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 发送网络请求并获取数据
    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];
    
  2. 代码解释
    • 首先创建一个NSURL对象,指定请求的URL。
    • 使用NSURLSessiondataTaskWithURL:completionHandler:方法创建一个数据任务,在completionHandler中处理请求的结果。
    • 如果error不为空,说明请求过程中出现错误,直接记录错误并返回。
    • 如果没有接收到数据(data为空),记录并返回。
    • 使用NSJSONSerializationJSONObjectWithData:options:error:方法解析接收到的NSData数据为JSON对象。如果解析过程中出现错误,记录错误并返回。如果解析成功,jsonObject就是解析后的JSON对象,可以根据实际需求进一步处理。