2016-10-15 26 views
-2

私は現在Swiftを勉強しようとしています。この練習問題ではAPIとJSONを使用しています。タイプ 'Any?'サブスクリプトメンバーがありません

"Type 'Any' has no subscript members".

は、誰かがそれが無い添字部材によって何を意味するのかと、私はこの問題を解決するために何ができるか私に説明できます:それは私にエラーを与えるの名前を表示しようとprint文では?私はスタックオーバーフローの他の問題を見てみましたが、とにかくこれを解決するために思い付くことはできません。

override func viewDidLoad() { 
    super.viewDidLoad() 

    let url = URL(string: "https://www.googleapis.com/blogger/v3/blogs/2399953/posts?key=AIzaSyDRiJilhWCEkMeEi40ONIPI3eDWukA0mQo") 

    let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in 
     if error != nil { 
      print("Error in URL") 
     } else { 
      do { 
       let jsonResults = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject 

       let items = (jsonResults["items"]!)! 

       for item in items as! [AnyObject] { 
        print(item["author"]?["displayName"]!) 
       } 
      } catch { 
       print("Error in JSON") 
      } 
     } 
    } 
    task.resume() 
} 
+0

見る:http://stackoverflow.com/questions/39423367/correctly-parsing-json-in-swift-3 –

答えて

1

AnyObjectには何か悪いことがあります。あなたは何を得るかについて具体的にしてください。もしあなたがそれ以外の場合は、guardのステートメントを使用してクラッシュを避けることができます。

if let jsonResults = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? Dictionary<String, AnyObject>{ 
    if let items = jsonResults["items"] as? Array<Dictionary<String, AnyObject>>{ 
     for item in items { 
      guard let dictAuthorDetails = item["author"] else { 
       continue 
      } 
      print(dictAuthorDetails["displayName"]) 
     } 
    } 
} 
関連する問題