Ios 检查http响应格式

Ios 检查http响应格式,ios,swift,Ios,Swift,我正在进行http调用并接收JSON响应 var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as! NSDictionary 但当没有收到实际的json时,此行失败并出现错误,无法将NSArray的值强制转换为NSDictionary 我理解为什么会发生这种情况我的问题是如何正确地检查响应的

我正在进行http调用并接收JSON响应

var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as! NSDictionary
但当没有收到实际的json时,此行失败并出现错误,无法将NSArray的值强制转换为NSDictionary


我理解为什么会发生这种情况我的问题是如何正确地检查响应的格式

我喜欢在api中这样做:

typealias JSONType = (dictionary: [String:AnyObject]?, array: [AnyObject]?)

var error:NSError?
var json:AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error)
if let dict = json as? [String:AnyObject] {
    return (dict, nil) 
}
else if let arr = json as? [AnyObject] { 
    return (nil, arr)
}
因此,当我返回该JSONType时,我可以通过以下方式将其更改为字典或数组:

json.array

为什么不总是返回JSON?服务器脱机数据不可用等。这是两个非常不同的事情:HTTP状态是您要测试的“服务器脱机”;维基百科有一个很好的例子,但你可能主要对代码20感兴趣。对于数据不可用性,要么确保返回200以外的自定义状态代码(然后决定是显示良好的错误代码处理它,还是像“服务器关闭”一样失败),要么始终将数据封装到“响应”JSON对象中,本身包含可在代码中处理的响应代码。的可能重复项