FOR IN循环中的错误

袋鼠克里斯

我正在尝试在for in循环中为数组quandlURLs运行以下函数。我在“ loadDataFromURL”行中遇到一条错误,说:无法将类型为[String]的值转换为类型为'Sting'的预期参数。有人可以告诉我我在这里想念的东西吗?谢谢!!

class func getDataFromQuandlWithSuccess(success: ((Quandl: NSData!) -> Void)) {
 let quandlGold = "https://www.quandl.com/api/v3/datasets/LBMA/GOLD.json?auth_token=xyzDP7Cj-2F_Jss7sYHf&rows=1"        
quandlURLs = [quandlGold, quandlSilver,quandlPlatinum,quandlPalladium]
    var index: Int
    var urlData = [String]()
    for index in quandlURLs {
        loadDataFromURL(NSURL(string: quandlURLs[index])!, completion:{(data, error) -> Void in
            //2
            if let urlData[index] = data {
                //3
                success(Quandl: urlData[index])
                //below worked and showed raw data
                //print("Successful \(urlData)")

            }
        })

    }
}

这是loadDataFromURL函数

class func loadDataFromURL(url: NSURL, completion:(data: NSData?, error: NSError?) -> Void) {
let session = NSURLSession.sharedSession()

// Use NSURLSession to get data from an NSURL
let loadDataTask = session.dataTaskWithURL(url, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
  if let responseError = error {
    completion(data: nil, error: responseError)
  } else if let httpResponse = response as? NSHTTPURLResponse {
    if httpResponse.statusCode != 200 {
      let statusError = NSError(domain:"com.raywenderlich", code:httpResponse.statusCode, userInfo:[NSLocalizedDescriptionKey : "HTTP status code has unexpected value."])
      completion(data: nil, error: statusError)
    } else {
      completion(data: data, error: nil)
    }
  }
})

loadDataTask.resume()
}
}
詹姆士

您要做的就是更改for index in quandlURLsfor index in 0..<quandlURLs.count

还有一个问题if let urlData[index] = data,因为您不能对数组使用可选绑定,因此需要定义一个新值,所以go if let urlDataEntry = data,在这种情况下,urlIndex数组应为NSData类型。

您也不需要var index: Int线。在创建Int数组的.. <函数上使用for in循环时,会推断Int,并且index变量可在整个for循环中使用。

例如:

class func getDataFromQuandlWithSuccess(success: ((Quandl: NSData!) -> Void)) {
    let quandlGold = "https://www.quandl.com/api/v3/datasets/LBMA/GOLD.json?auth_token=xyzDP7Cj-2F_Jss7sYHf&rows=1"        
    quandlURLs = [quandlGold, quandlSilver,quandlPlatinum,quandlPalladium]
    var urlData = [NSData]()
    for index in 0..<quandlURLs.count {
        loadDataFromURL(NSURL(string: quandlURLs[index])!, completion:{(data, error) -> Void in
            //2
            if let urlDataEntry = data {
                //3
                urlData[index] = urlDataEntry
                success(Quandl: urlDataEntry)
                //below worked and showed raw data
                //print("Successful \(urlData)")

            }
         })

    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章