gpt4 book ai didi

swift - 无法将类型 '[String]?' 的值转换为预期的参数类型 'String'

转载 作者:搜寻专家 更新时间:2023-10-31 22:07:15 25 4
gpt4 key购买 nike

我想要做的是将firstCard 的图像设置为与名称对应于firstCardString 的图像文件相同。

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

var deckArray = [
"card1": ["Bear","Ball"],
"card2": ["Bear","Ball"],
"card3": ["Bear","Ball"],
"card4": ["Bear","Ball"],
"card5": ["Bear","Ball"],
"card6": ["Bear","Ball"],
"card7": ["Bear","Ball"],
]

let firstRandomNumber = Int(arc4random_uniform(52))+1
let firstCardString = deckArray["card\(firstRandomNumber)"]
self.firstCard.image = UIImage(named: firstCardString)

相反,我收到以下错误:

Cannot convert value of type '[String]?' to expected argument type 'String'

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

最佳答案

[] 是数组,? 是可选的。您的 firstCardString 根本不是字符串,而是一个可选的字符串数组。您已经读取了该卡片的 deckArray 字典值,您看,所以您的 firstCardString 实际上看起来像这样:Optional(["Bear", "球"])。我想你的意思是:

self.firstCard.image = UIImage(named: "card\(firstRandomNumber)")

这将根据 "card1""card4" 等字符串设置图像。我假设你稍后会用你的字典来做其他事情。当你这样做时,一定要解开它返回的可选值:

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

或者,考虑使deckArray 成为一个数组(这将使名称更合理),而不是字典。这样您就不必处理可选值,并且能够按如下方式访问项目:

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

关于swift - 无法将类型 '[String]?' 的值转换为预期的参数类型 'String',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com