我试图在解析 json 时从本地服务器获取一些数据。在 View Controller 中,我访问本地 Ruby on Rails 服务器:
override func viewDidLoad() {
super.viewDidLoad()
var url = NSURL(scheme: "http", host: "0.0.0.0:3000", path: "/api/search?query=auto")
var request = NSURLRequest(URL: url)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {(data, response, error) in
var data1: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
println(data1)
println(data1["companies"])
var companies = data1["companies"] as NSArray
for company: AnyObject in companies {
println(company)
}
}
task.resume()
}
println(data1)
返回:
{
companies = "[{\"alias\":\"02-avtomoyka-tulybaev-r-t\",\"id\":45693},{\"alias\":\"1001-zapchast-internetmagazin-avtotovarov\",\"id\":42621}]";
}
使用 println(data1["companies"])
,我在控制台中得到了对象数组:
[{"alias":"02-avtomoyka-tulybaev-r-t","id":45693},{"alias":"1001-zapchast-internetmagazin-avtotovarov","id":42621}]
然后,当我尝试迭代该数组时,应用程序崩溃了。我究竟做错了什么?
控制台中没有错误,但 Tread 6 中出现 (lldb)
和 EXC_BREAKPOINT(code=EXC_I386_BPT, subcode 0x0)
PS:Xcode 还抛出了编译器问题 Constant 'company' inferred to have type 'AnyObject', which may be unexpected
at for company in companys {
string.我该如何处理?
最佳答案
尝试 var companies = data1["companies"].allValues; 而不是
var companies = data1["companies"] as NSArray
问题是 data1["companies"]
是一个字典,不能隐式转换为 NSArray
。编译器没有捕捉到这一点,因为 data1["companies"]
作为 AnyObject
存储在 NSDictionary
中,并且允许您将其转换为任何子类。
关于ios - 无法遍历数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24379380/