Swift 无法转换类型为';[字符串]?';到预期的参数类型';字符串';

Swift 无法转换类型为';[字符串]?';到预期的参数类型';字符串';,swift,Swift,我要做的是将firstCard的图像设置为与名为firstCardString的图像文件相等 例如,在下面的例子中,代码可以设置self.firstCard.image以显示名为“card1”的图像,如果它随机选取它(为了简洁起见,我剪裁了数组的其余部分,完整的东西包含52个对象) 相反,我得到了以下错误: 无法将“[String]”类型的值转换为预期的参数类型“String” 我不完全确定这个错误消息的意思,什么是[String]? []是一个数组,?是可选的。您的firstCardStrin

我要做的是将
firstCard
的图像设置为与名为
firstCardString
的图像文件相等

例如,在下面的例子中,代码可以设置
self.firstCard.image
以显示名为“card1”的图像,如果它随机选取它(为了简洁起见,我剪裁了数组的其余部分,完整的东西包含52个对象)

相反,我得到了以下错误:

无法将“[String]”类型的值转换为预期的参数类型“String”


我不完全确定这个错误消息的意思,什么是
[String]?

[]
是一个数组,
是可选的。您的
firstCardString
根本不是一个字符串,而是一个可选的字符串数组。您已经阅读了该卡的
deckArray
字典值,您知道,因此您的
firstCardString
实际上看起来是这样的:
可选([“熊”,“球])
。我想你的意思是:

self.firstCard.image = UIImage(named: "card\(firstRandomNumber)")
这将基于字符串设置图像,如
“card1”
“card4”
。我想你以后会用你的字典做别的事。执行此操作时,请确保打开它返回的可选值:

if let cardArray = deckArray["card\(firstRandomNumber)"] {
    //do something with bears and balls
}

可选地,考虑制作<代码> DekStale一个数组(这将使名称更合理),而不是字典。这样,您就不必处理可选项,并且可以访问以下项目:

let cardArray = deckArray[firstRandomNumber]
//do something with bears and balls

看起来deckArray实际上是字符串数组的字典。因此,如果
firstRandomNumber=1
deckArray[“card\(firstRandomNumber)”
将返回
[“Bear”,“Ball”]
。那绝对不是一根绳子

您的deckArray是一个字典,您的firstCardString是一个数组

String = String

[String] = Array of strings.

但是,如果我使用
self.firstCard.image=UIImage(名为:“card\(firstRandomNumber)”)
,是否会尝试将firstCard设置为一个介于1和52之间的随机数,而不是将其设置为与该数字的索引相对应的键(“card4”)?图像名称将是“card1”或“card3”或“card5”。看到名字里的“卡”字了吗?然后是
\(firstRandomNumber)
,它将在单词“card”后插入数字。@andyvn22请在此处回答相同的相关问题。请在此处回答类似的相关问题。请在此处回答类似的相关问题
String = String

[String] = Array of strings.