2014-10-05 95 views
4

我想解析JSON響應,創建一個模型的實例並填充tableview。致命錯誤:不能unsafeBitCast不同類型的不同尺寸

這是我的迴應:

{ 
    "jsonrpc": "2.0", 
    "id": 1, 
    "result": [ 
    { 
     "token": "4L12XJHPWM18", 
     "name": "Berlin", 
     "nameShort": "BLN", 
     "country": "Germany", 
     "mapLat": 52.5078884, 
     "mapLng": 13.4392219, 
     "mapZoom": 13, 
     "timezone": "CET" 
    }, 
    ... 
    ] 
} 

這是我如何獲取並解析它

Alamofire.request(.POST, BGAPIBaseUrlV1, parameters: JSONObject, encoding: .JSON) 
    .responseJSON { (request: NSURLRequest, response: NSHTTPURLResponse?, object: AnyObject?, error: NSError?) -> Void in 

     if (object != nil) { 
      var responseDic = object as [String: AnyObject] 
      var result: AnyObject? = responseDic["result"] 
      if let resultArray = result as? Array<Dictionary<String, AnyObject>> { 
       if (success != nil) { 
        success!(resultArray) 
       } 
      } 
     } 

     if (error != nil) { 
      failure!(error!) 
     } 
} 

沒有問題,直到我試圖通過個數組循環,我傳遞給封閉

APIManager.fetchCities({ (cities: Array<Dictionary<String, AnyObject>>) -> Void in 
    for tmpCity in cities { 
     var city: CityModel = CityModel(dict: tmpCity) <---------- 
     self.tableViewData.append(city) 
    } 

    self.tableView.reloadData() 
}, failure: { (error: NSError) -> Void in 
    println("It didn't work") 
}) 

我得到和EXC_BAD_INSTRUCTION以及以下錯誤

fatal error: can't unsafeBitCast between types of different sizes

任何想法爲什麼?

回答

3

也許你會在你的「...」中用String!類型替換某些東西,例如:你將有錯誤,如果使用:

var str: String! = "" 
var data: NSDictionary = [ "myString": str ] 

var str: String = "" 
var data: NSDictionary = [ "myString": str ] 

將正常工作。