swift - 将两个 [String : Int] dictionaries in Swift

标签 swift

所以我尝试使用最新的 Swift 在 Xcode 中添加两个 [String : Int] 字典的值。我的代码如下所示。两个字典都有从 q1q23 的键并附加了值。这就是随机数在 23 处停止的原因。键 q1 在此函数中没有用处(这就是随机数从 2 开始的原因)。字典值是由另一个 View Controller 在连接到此 View Controller 期间给出的,我不会手动分配它们。字典中的值不需要是可选的,因为它们已被分配值以访问此 viewController。

我已经用谷歌搜索了一个小时,但我无法理解reduce、combined或map函数,因为它们适用于此,当我只想添加时做如此复杂的事情似乎我忽略了一个更简单的方法.

var p1Pre:[String:Int]  = [“q1” : 1]

var p2Pre:[String:Int]  = [“q1” : 1]
var combPre:[String:Int]  = [“q1” : 0]

var pick = 0

// generates random number 2-23
func pickRandom(){
    pick = Int.random(in:2...23)
} 

func addPrefs(){
    // this is where i'm having trouble
    combPre[“q\(pick)] = p1Pre[“q\(pick)”] + p2Pre[“q\(pick)”]
    print(combPre[“q\(pick)”]
    // I get an error at the plus sign here
}

我正在尝试在两个字典(p1Prep2Pre)内的特定键处添加值,结果将存储在combPre 中。我想构建一个函数,因此如果 p1Pre[“q2”] == 1p2Pre[“q2”] == 2,则 combPre[“q2” ”] = 3。 我在加号处收到错误,显示“二元运算符“+”不能应用于两个“Int?”操作数”。我该如何完成这项工作?谢谢

最佳答案

当您使用下标访问字典时,表达式的类型始终是值类型的可选类型,因为您正在使用的键可能不存在于字典中。您不能将两个可选的 Int 添加在一起。

您需要考虑“如果字典中不存在键“q\(pick)”怎么办?”的情况,并相应地解开两个选项。

在我看来,当键不存在时,明智的做法是使用值 0,因为它是加法的标识:

combPre[“q\(pick)] = (p1Pre[“q\(pick)”] ?? 0) + (p2Pre[“q\(pick)”] ?? 0)

如果您100%确定 key 存在,则可以考虑强制解包它:

combPre[“q\(pick)] = p1Pre[“q\(pick)”]! + p2Pre[“q\(pick)”]!

仅当您100%确定时才执行此操作,例如“如果 key 不存在,那么一定发生了非常糟糕的事情”这种情况。

关于swift - 将两个 [String : Int] dictionaries in Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992868/

相关文章:

ios - 强制 collectionView 只有 2 行

ios - 如何将 BGRA 图像保存到 iphone,然后将其带到笔记本电脑进行后期处理

ios - 点击手势仅在 3 次点击后响应

swift - 在 Swift 扩展中访问具有多个参数的方法

ios - 随机给 Sprite 着色,但需要限制

ios - 向 iOS 项目添加和访问二进制 blob 原始数据文件

swift - 绑定(bind)文本字段文本以启用按钮不起作用

ios - 关于BoutTime游戏swift 3 Next Round的一些问题

ios - 尝试为 IOS 8 编译时出现编译器错误

ios - 是否可以在不使用单例的情况下访问 View Controller 的特定实例?