无法解决“模糊使用下标”

时间:2016-09-08 11:33:51

标签: ios json swift nsurlsession

我正在尝试将JSON响应(从NSUrlSession)转换为我可以使用的数组。

这很奇怪,这是昨晚的工作。但是我现在有一个构建错误,说“模糊地使用下标”。

    let url = NSURL(string: "http://192.168.0.8/classes/main.php?fn=dogBoardingGet")
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        print(NSString(data: data!, encoding: NSUTF8StringEncoding))
        //var boardings = [String]()

        do {
            let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)

            if let theDogs = json[0] as? [[String: AnyObject]] {
                for dog in theDogs {
                    if let ID = dog["ID"] as? String {
                        print(ID + " Safe")
                        let thisDog = Dog(name: (dog["Name"] as? String)!, surname: (dog["Surname"] as? String)!, id: (dog["ID"]  as? String)!, boarding: true)
                        let newIndexPath = NSIndexPath(forRow: self.dogs.count, inSection: 0)
                        self.dogs.append(thisDog)
                        self.tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom)
                    }
                }
            }
        } catch {
            print("error serializing JSON: \(error)")
        }

       // print(names) // ["Bloxus test", "Manila Test"]

    }

    task.resume()

错误出现在这一行:if let theDogs = json[0] as? [[String: AnyObject]] {

从查看其他问题时我可以看出错误是因为AnyObject,因此我尝试将其更改为[String: String],但我仍然遇到同样的错误。

任何人都可以看到此错误的原因吗?

额外信息

从服务器收到的JSON响应:

  

[[{ “ID”: “47”, “名称”: “Sparky的”, “姓”: “麦卡利斯特”}]]

1 个答案:

答案 0 :(得分:1)

看起来您正在使用NSJSONSerialization,但是您没有说出您期望的对象类型([AnyObject]或[String:AnyObject])。你得到的错误是由于你没有把json转换为[AnyObject]。

PS:您可能考虑不对数据使用强制解包(数据!)

let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as! [AnyObject]