2017-03-02 8 views
0

を行きます。あいまいな使用は、私はPHPスクリプトでJSONとしてエンコードされたデータを取得しようとしています「添字」

マイコード:

てみましょうかのエントリ= myJson [インデックス]のように:私はラインで '添字のあいまいな使用' というエラーを取得しています

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() 

    } 

? NSDictionaryの{

私はこれをどのように修正することができますか?

答えて

0

あなたはmyJsonは、あなたが指定されていないAnyObjectにオブジェクトをキャストしない理由配列である知っているので?エラーが発生し

、コンパイラは、すべての添字付きオブジェクトの具体的な種類を知る必要があります。

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はスウィフトで完全に役に立たないです:その後、コンパイラはあなたを助けコンパイラを助けます。

関連する問題