【发布时间】:2019-07-11 15:40:40
【问题描述】:
所以我尝试使用最新的 Swift 在 Xcode 中添加两个 [String : Int] 字典的值。我的代码如下所示。两个字典都有从 q1 到 q23 的键,并附加了值。这就是随机数在 23 处停止的原因。密钥 q1 在此函数中没有用(这就是随机数从 2 开始的原因)。字典值是由另一个视图控制器在 segue 到这个 viewController 期间给出的,我没有手动分配它们。字典中的值不需要是可选的,因为它们将已被分配值以获取此 viewController。
我已经在谷歌上搜索了一个小时,但我无法理解它们将应用于此的 reduce、combine 或 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。
我在显示 “binary operator “+” cannot be applied to two ‘Int?’ Operands" 的加号处收到错误消息。我将如何进行这项工作?谢谢
【问题讨论】:
-
问题是没有保证
p1Pre[“q\(pick)”]存在。所以它的值是一个可选的 Int (解释你的错误消息Int?的部分)。 -
你可以用反引号写
inline highlighted code。 -
我可以强制它不是可选的吗?因为我知道运行这段代码时它会一直存在。我相信它被称为强制展开?我怎么做?谢谢。
-
只需在变量名旁边添加一个
!。请注意,如果由于某种原因它不存在,应用程序将崩溃。
标签: swift