所以我尝试使用最新的 Swift 在 Xcode 中添加两个 [String : Int]
字典的值。我的代码如下所示。两个字典都有从 q1
到 q23
的键并附加了值。这就是随机数在 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
}
我正在尝试在两个字典(p1Pre
和 p2Pre
)内的特定键处添加值,结果将存储在combPre 中。我想构建一个函数,因此如果 p1Pre[“q2”] == 1
且 p2Pre[“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/