iOS / objective-c:NSJSONSerialization优雅失败

时间:2015-11-22 13:39:45

标签: ios objective-c

当没有数据时(即使由于服务器问题而存在Internet连接时也会发生这种情况),以下崩溃。是否有一种方法可以使用错误术语使其优雅地降级,或者在调用JSONSerialization之前是否必须使用另一个if语句,例如feed中有数据。想找到另一个if语句的替代方案。实际上,下面的if语句在代码中较早,并且所有ifs变得非常复杂。

if (internet) {
//some code
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:jsonFeed
                                                             options:kNilOptions
                                                               error:&error];
//some code
}

2 个答案:

答案 0 :(得分:2)

唯一的另一种选择是让一个方法/函数将调用包装到JSONObjectWithData:options:error:并在jsonFeed为零时返回nil。你只是隐藏了if语句,但如果你在很多地方都需要它,那么它可能是值得的。

答案 1 :(得分:1)

NSJSONSerialization将使用任何内容处理任何有效的NSData对象。传递一个nil NSData是一个编程错误,它正确地引发异常。

您可以传递

jsonfeed ?: [NSData data]

而不是jsonfeed。但那你为什么要测试“if(internet)”?那是胡说八道。重要的不是你是否有互联网连接,重要的是你是否与返回结果的服务器有连接。