2014-06-24 141 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生成問題解決了這個問題。 –