【问题标题】:Appending [(String, Double)] in Swift在 Swift 中附加 [(String, Double)]
【发布时间】:2017-03-27 06:34:40
【问题描述】:

我仍在学习 Swift,并且正在学习我在网上找到的 Stock Web Service 教程。我非常坚持将服务中提取的值附加到我的数组中。下面是示例代码。

数组初始化

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

追加

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);


    }

我总是收到“无法将类型 [(String, Double)] 转换为预期参数类型 (String, Double)”的错误。

能否请您帮我做一个简短的介绍?

【问题讨论】:

  • 你需要使用 sampleStocks.append(contentsOf: me)
  • 如果你真的想学习 Swift 寻找更好的教程,例如那些建议使用自定义结构而不是元组并且不使用分号和 NSDictionary / NSArray 和冗余类型注释。

标签: ios arrays swift string


【解决方案1】:

var me: [(String,Double)] 是一个数组。你需要的是一个元组。像这样声明me 变量:

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

【讨论】:

  • 您好,马克斯,感谢您的回复。所以我做了'code var me: (String,Double) = [quoteDict["symbol"] as!字符串,双(changeInPercentStringClean)];'我有一个错误上下文类型(字符串,双精度)不能与数组文字一起使用
【解决方案2】:

您可以通过以下方式在 swift 3.0.2 中使用:

sampleStocks.append(contentsOf: me)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多