Swift json解析错误:无法将NSCFConstantString类型的值强制转换为NSArray

时间:2015-04-23 10:59:47

标签: json swift parsing

使用swift代码解析json时遇到了一些问题。

json示例

{"responce": "ok","orders": [{"id":"1"), {"id":"2"}, {"id":"3"} ]}

并且此代码正常运行

let dataArray: NSArray = jsonResult["orders"] as! NSArray

但如果我得到{"responce": "ok","orders": ""},我就会得到error: Could not cast value of type __NSCFConstantString (0x10c7bfc78) to NSArray (0x10c7c0470).

我可以以某种方式检查值是否为数组而不是崩溃?

2 个答案:

答案 0 :(得分:3)

是的,您可以通过执行以下操作来检查该值是否为NSArray:

if let dataArray = jsonResult["orders"] as? NSArray {

}

如果jsonResult["orders"]的结果是NSArray,那么将设​​置dataArray,你将进入if语句。

答案 1 :(得分:1)

这个错误很可能是由你从我​​认为的服务器不是JSON的回复中引起的,但是就像是HTML / XML响应,说无法访问服务器,或者你的查询/ post请求无效(因此该值为" NSCFConstantString")。

使用詹姆斯'回答是检查值是否为数组的一种非常好的方法,但您可能希望使用Postman等程序测试您的请求以查看他的响应,然后硬编码以便在用户端处理该错误。