首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不明确的用法是go 'subscript‘

不明确的用法是go 'subscript‘
EN

Stack Overflow用户
提问于 2017-03-03 01:28:50
回答 1查看 40关注 0票数 0

我正在尝试获取已经在php脚本中编码为json的数据。

我的代码:

代码语言:javascript
复制
func getJson(completion: @escaping (Array<CarPark>) -> Void) {

        activityIndicatior.center = self.view.center
        activityIndicatior.hidesWhenStopped = true
        activityIndicatior.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray
        view.addSubview(activityIndicatior)
        self.activityIndicatior.startAnimating()

        let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
            if error != nil
            {
                print("ERROR")
            }
            else
            {
                if let content = data
                {

                    do{

                        let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject

                        for index in 0..<myJson.count {

                            if let entry = myJson[index] as? NSDictionary{
                            let name = entry["Name"] as! String
                           let longitude = Double(entry["Longitude"] as! String)
                           let latitude = Double(entry["Latitude"] as! String)

                          let quiet = Int(entry["Quiet"] as! String)
                        let moderate = Int(entry["Moderate"] as! String)

                            let busy = Int(entry["Busy"] as! String)
                            let coordinate = CLLocationCoordinate2D( latitude: latitude!, longitude: longitude!)

                            print("coordinate lat is : \(coordinate.latitude)")
                            print("coordinate long is : \(coordinate.longitude)")
                            print("coordinate full is: \(coordinate)")
                            let tempPark = CarPark(name: name, latitude: latitude!, longitude: longitude!, quiet: quiet!, moderate: moderate!, busy: busy!, coordinate: coordinate, level: "Nil")
                            let level = tempPark.calcAvailability()
                            tempPark.level = level
                            print("Availability is \(tempPark.level)")
                            self.tempCarParks.append(tempPark)
                           // print("amount of parks: \(self.carParks.count)")
                           print("name of parks in array: \(self.tempCarParks[index].name)")
                            print("Availability is \(tempPark.level)")
                            }

                        }
                       completion(self.tempCarParks)

                    }
                    catch
                    {
                        print("Error")
                    }
                }
            }
    }

        task.resume()

    }

我收到一个错误,该行显示‘歧义使用下标’:

if let entry = myJsonindex as?NSDictionary{

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2017-03-03 01:32:49

既然知道myJson是一个数组,为什么还要将对象强制转换为未指定的AnyObject

这会导致错误,编译器需要知道所有下标对象的具体类型。帮助编译器,然后编译器帮助您:

代码语言:javascript
复制
  let myJson = try JSONSerialization.jsonObject(with: content) as! [[String:Any]]

  for entry in myJson { // don't use old-fashioned index based loops

     let name = entry["Name"] as! String
 ...

.mutableContainers在Swift中完全没用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42562046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档