2017-12-06 8 views
-1

symbolStringというStringの値を取得できませんでした。私はこれをする方法を知らない。これは私がこれまでに得たものです。最初にDataの子を取得してから、symbolStringに移動してImageUrl Valueを取得しました。それは動作していないようです。助けてください!StringでJsonの子を取得する

final let urlString = "https://www.cryptocompare.com/api/data/coinlist/" 

     func downloadJsonWithURL() { 
      let url = NSURL(string: urlString) 

      URLSession.shared.dataTask(with: (url as? URL)!, completionHandler: {(data, response, error) -> Void in 
       if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSDictionary { 
        if let DataArray = jsonObj!.value(forKey: "Data") as? NSArray { 
         print(DataArray) 
         for Data in DataArray{ 
          if let DataDict = Data as? NSDictionary { 
           if let nameURL = DataDict.value(forKey: "\(self.symbolString)") as? NSDictionary { 
            if let name = nameURL.value(forKey: "ImageUrl") { 
             self.imageString.append(name as! String) 
             print(self.imageString) 
            } 
           } 
          } 
         } 
        } 
       } 
      }).resume() 
     } 
+2

JSONには配列( '[]')はありません。すべてのコレクションタイプは辞書( '{}')です。ちなみに、変数名は小文字で始まり、SwiftでNSArray、NSDictionary、およびvalueForKeyを使用しません。 – vadian

+0

あなたのデータには 'symbolString'のインスタンスはありません。正確にそれを見つけることを期待していますか? – Patru

+0

symbolStringは、たとえば "BTC"の文字列です。それはうまくいく、私はそれをチェックした。しかし、あなたがURLを見ると、私はまず "Data"と "BTC"(symbolString)のようにする必要があります。しかし、私はそれを行う方法を知らない。 – Danjhi

答えて

0

次のコードを試すことができます。私のために働いています。

func downloadJsonWithURL() { 
    let url = "https://www.cryptocompare.com/api/data/coinlist/" 
    var urlRequest = URLRequest(url: URL(string: url)!) 
    let task = URLSession.shared.dataTask(with: urlRequest) { data, response, error in 

     guard let unwrappedDAta = data else { 
      print("Error unwrapping data") 
      return 
     } 

     do { 
      let responseJSON = try JSONSerialization.jsonObject(with: unwrappedDAta, options: []) as? NSDictionary 

      if let dataDict = responseJSON!["Data"] as? NSDictionary { 
       for (key, _) in dataDict { 
        if let keyDict = dataDict[key] as? NSDictionary { 
         if let imageURL = keyDict["ImageUrl"] as? String { 
          self.imageString.append(imageURL) 
         } 
         print(self.imageString) 
        } 
       } 
      } 
     } catch { 
      print("Could not get API data. \(error))") 
     } 
    } 
    task.resume() 
} 
関連する問題