Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 循环中的错误_Arrays_Swift_For Loop - Fatal编程技术网

Arrays 循环中的错误

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

我试图在for-in循环中为数组quandlURL运行以下函数。我在“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()
}
}

这里您只需将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)")

            }
         })

    }
}