2014-06-24 143 views
0

我想在解析json时从本地服务器获取一些数据。在视图控制器我访问本地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}] 

然后,当我试图遍历该数组时,应用程序崩溃。我究竟做错了什么? 它stucks在控制台中没有错误,但在轮距6

PS (lldb)EXC_BREAKPOINT(code=EXC_I386_BPT, subcode 0x0):Xcode中还抛出在for company in companies {字符串编译器问题Constant 'company' inferred to have type 'AnyObject', which may be unexpected。我该如何处理?

+0

您能否提供错误并编辑您的查询,以便更清楚地理解。 – nikhil84

+0

@ walle84我添加了更多的代码,希望这有助于。 –

+2

对于该编译器警告,将您的for循环更改为'for company:AnyObject in companies {...}' –

回答

1

而不是var companies = data1["companies"] as NSArray尝试var companies = data1["companies"].allValues;

的问题是data1["companies"]是一本字典,不能隐式转换为NSArray。编译器不会捕获这个,因为data1["companies"]NSDictionary的形式存储为AnyObject,并允许您将其转换为任何子类。

+0

谢谢,但'data1 [“companies”]。allValues'返回nil无论是格式良好的json而不是。纠正json生成问题解决了这个问题。 –