简体   繁体   English

在Swift中追加[(String,Double)]

[英]Appending [(String, Double)] in Swift

I'm still learning Swift, and I am learning this Stock Web Service tutorial that I found in the Web. 我仍在学习Swift,并且正在学习在Web上找到的此Stock Web Service教程。 I am quite stuck in appending the extracted values from the service to my array. 我非常想将从服务中提取的值附加到数组中。 Below is the sample code. 下面是示例代码。

Array Initialization 数组初始化

private var sampleStocks: [(String, Double)] = [("GOOG", +2.2), ("YHOO", +3.22), ("AAPL", -4.1)];

Appending 追加中

let values = (notification.userInfo as! Dictionary<String,NSArray>)
    let stocksReceived:NSArray = values[constantNotifUpdate]!;
    sampleStocks.removeAll();
    for quote in stocksReceived {
        let quoteDict:NSDictionary = quote as! NSDictionary;
        var changeInPercentString = quoteDict["ChangeinPercent"] as! String;
        let changeInPercentStringClean: String = changeInPercentString.substring(to: changeInPercentString.index(before: changeInPercentString.endIndex));
        var me: [(String,Double)] = [(quoteDict["symbol"] as! String, Double(changeInPercentStringClean))];
        sampleStocks.append(me);


    }

I always got this error of "Cannot convert of type [(String, Double)] to expected argument type (String, Double)". 我总是收到“无法将类型[[(String,Double)]转换为预期的参数类型(String,Double)”的错误。

May you please help me and give me a short run through? 您能帮我一下吗?

var me: [(String,Double)] is an Array. var me: [(String,Double)]是一个数组。 What you need is a tuple. 您需要的是一个元组。 Declare the me variable like this: 像这样声明me变量:

var me: (String,Double) = (quoteDict["symbol"] as! String, Double(changeInPercentStringClean)!);

You can use in swift 3.0.2 by: 您可以通过以下方式在Swift 3.0.2中使用:

sampleStocks.append(contentsOf: me)

or 要么

var me: (String,Double) = (quoteDict["symbol"] as! String, Double(changeInPercentStringClean))
sampleStocks.append(me)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM