Arrays 循环中的错误
我试图在for-in循环中为数组quandlURL运行以下函数。我在“loadDataFromURL”行中收到一个错误,表示:无法将[String]类型的值转换为“Sting”类型的预期参数。有人能告诉我我在这里错过了什么吗。谢谢Arrays 循环中的错误,arrays,swift,for-loop,Arrays,Swift,For Loop,我试图在for-in循环中为数组quandlURL运行以下函数。我在“loadDataFromURL”行中收到一个错误,表示:无法将[String]类型的值转换为“Sting”类型的预期参数。有人能告诉我我在这里错过了什么吗。谢谢 class func getDataFromQuandlWithSuccess(success: ((Quandl: NSData!) -> Void)) { let quandlGold = "https://www.quandl.com/api/v3/da
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()
}
}
这里您只需将QuandlURL中的索引的
更改为0中的索引的。。无效){
让quandlGold=”https://www.quandl.com/api/v3/datasets/LBMA/GOLD.json?auth_token=xyzDP7Cj-2F_Jss7sYHf&rows=1“
QuandlURL=[quandlGold、quandlSilver、quandlPlatinum、QuandlParadium]
var urlData=[NSData]()
对于0中的索引..中的无效
//2
如果让urlDataEntry=data{
//3
urlData[index]=urlDataEntry
成功(Quandl:urlDataEntry)
//下面是工作和显示的原始数据
//打印(“成功\(urlData)”)
}
})
}
}
感谢您的评论-不幸的是,错误仍然存在。我应该提到这个数组是由网络链接构建的,例如,让quandlGold=”“我在上面的评论中添加了这个,以进一步澄清。你能包含整个类吗?loadDataFromURL似乎是类中的另一个函数,没有它我无法测试代码。嗨,James,我在上面添加了loadDataFromURL。谢谢你看这个!干杯我又看了一眼,看到了问题所在。for-in循环将索引设置为数组中的字符串值,因此当您下标(即quandlURL[index])时,您将使用字符串值,当它需要Int时。我已将我的答案更新为showHi James,well spottet。如果让urlData[index]=data{……..,我现在在第行中得到一个“无效模式”错误。您介意再看一看吗?您能突出显示错误行吗?
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)")
}
})
}
}