Arrays Swift阵列不';不持有价值观

Arrays Swift阵列不';不持有价值观,arrays,swift,Arrays,Swift,我在尝试用Swift构建一些东西时遇到了以下问题。显然,我添加到数组中的值并没有保存到某个点。在任务运行时,它们按照协议发送,但在任务完成后,如果我尝试查看数组中的值,它将返回空 我做错了什么?我的猜测是,它会在任务完成后被释放。如果是这样,有没有办法让它变得强大?关于这项任务我应该知道些什么吗?你能给我解释一下这是怎么回事吗?我该怎么办 代码如下: var exchangeArray : ExchangeValues[] = []; func fetchResult(){ var c

我在尝试用Swift构建一些东西时遇到了以下问题。显然,我添加到数组中的值并没有保存到某个点。在任务运行时,它们按照协议发送,但在任务完成后,如果我尝试查看数组中的值,它将返回空

我做错了什么?我的猜测是,它会在任务完成后被释放。如果是这样,有没有办法让它变得强大?关于这项任务我应该知道些什么吗?你能给我解释一下这是怎么回事吗?我该怎么办

代码如下:

var exchangeArray : ExchangeValues[] = [];

func fetchResult(){
    var currenciesOrder = ["EUR", "USD", "GBP", "CHF", "NOK", "SEK", "DKK", "CZK","TRY", "BGN", "MDL", "PLN", "XDR", "XAU", "UAH", "RUB", "RSD","CAD", "AUD", "JPY", "EGP", "BRL","HUF", "MXN","KRW", "CNY","NZD","INR","AED", "ZAR"];
    let dateFormat = NSDateFormatter();
    dateFormat.dateFormat = "yyyy-MM-dd";

    for days in 0..2 {

        let daysToSubstract = Double(60*60*24*days);
        let date : String = dateFormat.stringFromDate(NSDate().dateByAddingTimeInterval(-daysToSubstract));

        var url: NSURL = NSURL(string: "http://openapi.ro/api/exchange/all.json?date=" + date);
        var session = NSURLSession.sharedSession();
        var task = session.dataTaskWithURL(url, completionHandler: {
            (data, response, error) -> Void in
            if (response != nil){
                var err: NSError?;
                if(err?) {
                    println("request Error \(err!.localizedDescription)");
                }
                //send the result to protocol
                let results = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary;

                let temp : NSDictionary = results["rate"] as NSDictionary;

                for key in 0..currenciesOrder.count{

                    for (currencyKey : AnyObject, currencyValue : AnyObject) in temp {
                        if currenciesOrder[key] as String == currencyKey as String {
                            let tempExchange = ExchangeValues(currency: currencyKey as? String, value: currencyValue.doubleValue, date:date );
                            self.exchangeArray.append(tempExchange);
                        }

                    }

                }
                self.delegate?.didReceiveResults(self.exchangeArray);
            } else {
                println("error: \(error.localizedDescription)");
            }

        })
        task.resume();
    }

    println("\(exchangeArray.count)");
}

我有点明白问题出在哪里了:

任务块返回void,因此我认为它在完成后会清空数组。结果是创建另一个从任务中调用的函数,在该函数中,数组工作正常(当值存在时它会被传递),任何进一步的处理都可以在那里完成。

我希望这对某人有所帮助。代码非常简单,如下所示:

    func sendResults(array : ExchangeValues[]) -> Void{

    println("\(exchangeArray.count)"); }

当然,如果需要,您可以让函数返回一些内容

阵列很强。如果你仍然有数组,你仍然有你放在里面的任何东西。在dataTaskWithURL上有一个完成块,您可以在其中向exchangeArray添加一些内容。这真的叫过吗?如果这句话是真的吗?在self.exchangeArray.append(tempExchange)上设置断点查看。你是说数组没有保存值,因为最后一个
println(\(exchangeArray.count)”)
打印了一个零?是的,它打印了0最后一个调用,我需要数组保存发送给代理的数据。如果你想问另一个问题,请创建一个新线程,因此,不要在指定的答案中进一步提问。