当没有数据时(即使由于服务器问题而存在Internet连接时也会发生这种情况),以下崩溃。是否有一种方法可以使用错误术语使其优雅地降级,或者在调用JSONSerialization之前是否必须使用另一个if语句,例如feed中有数据。想找到另一个if语句的替代方案。实际上,下面的if语句在代码中较早,并且所有ifs变得非常复杂。
if (internet) {
//some code
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:jsonFeed
options:kNilOptions
error:&error];
//some code
}
答案 0 :(得分:2)
唯一的另一种选择是让一个方法/函数将调用包装到JSONObjectWithData:options:error:
并在jsonFeed
为零时返回nil。你只是隐藏了if语句,但如果你在很多地方都需要它,那么它可能是值得的。
答案 1 :(得分:1)
NSJSONSerialization将使用任何内容处理任何有效的NSData对象。传递一个nil NSData是一个编程错误,它正确地引发异常。
您可以传递
jsonfeed ?: [NSData data]
而不是jsonfeed。但那你为什么要测试“if(internet)”?那是胡说八道。重要的不是你是否有互联网连接,重要的是你是否与返回结果的服务器有连接。