二元运算符“==”不能应用于 'UIImage?' 和 'String' - Swift 类型的操作数 4
Binary operator '==' cannot be applied to operands of type 'UIImage?' and 'String' - Swift 4
我正在制作一个汽车测验应用程序,用户将尝试将模型与品牌(品牌)相匹配。模型和品牌都显示为 UIImages。
let carModelList = ["Camaro",
"Mustang",
"Challenger"]
let carBrandList = ["Chevy",
"Ford",
"Dodge"]
我需要检查用户是否进行了正确的匹配。我通过比较数组索引来做到这一点...
if carModel.image == carModelList[0] && carBrand.image == carBrandList[0] {
在这个例子中会有一个正确的匹配,因为 Camaro 是由雪佛兰制造的。
但是,我得到这个错误...
二元运算符“==”不能应用于 'UIImage?' 和 'String'
类型的操作数
所以,我尝试将数组更改为...
var carModelList: [UIImage] = [
UIImage(named: "Camaro")!,
UIImage(named: "Mustang")!,
UIImage(named: "Challenger")!
]
var carBrandList: [UIImage] = [
UIImage(named: "Chevy")!,
UIImage(named: "Ford")!,
UIImage(named: "Dodge")!
]
但是,然后在我的两行代码中随机 select 要呈现给用户的图像 ...
carModel.image = UIImage(named: carModelList.randomElement()!)
carBrand.image = UIImage(named: carBrandList.randomElement()!)
我收到这个错误...
无法将类型 'UIImage' 的值转换为预期的参数类型 'String'
向您显示该消息是因为您确实在尝试传递图像,但构造函数需要图像的名称,它是一个字符串。
如果你想这样称呼它:
carModel.image = UIImage(named: carModelList.randomElement()!)
carBrand.image = UIImage(named: carBrandList.randomElement()!)
您的数组必须如下所示:
var carModelList: [String] = [
"Camaro",
"Mustang",
"Challenger"
]
var carBrandList: [String] = [
"Chevy",
"Ford",
"Dodge"
]
另一种选择是使用图像数组这样调用它:
carModel.image = carModelList.randomElement()!
carBrand.image = carBrandList.randomElement()!
确保避免强制展开。
还有,你的String数组和UIImage数组是一样的,如果你想比较它们,请重命名它们。
问题是你使用
let carModelList = ["Camaro",
"Mustang",
"Challenger"]
let carBrandList = ["Chevy",
"Ford",
"Dodge"]
和
var carModelList: [UIImage] = [
UIImage(named: "Camaro")!,
UIImage(named: "Mustang")!,
UIImage(named: "Challenger")!
]
var carBrandList: [UIImage] = [
UIImage(named: "Chevy")!,
UIImage(named: "Ford")!,
UIImage(named: "Dodge")!
]
使用相同的数组名称,这就是为什么当您执行 == swift 时无法理解您使用的是哪个
我正在制作一个汽车测验应用程序,用户将尝试将模型与品牌(品牌)相匹配。模型和品牌都显示为 UIImages。
let carModelList = ["Camaro",
"Mustang",
"Challenger"]
let carBrandList = ["Chevy",
"Ford",
"Dodge"]
我需要检查用户是否进行了正确的匹配。我通过比较数组索引来做到这一点...
if carModel.image == carModelList[0] && carBrand.image == carBrandList[0] {
在这个例子中会有一个正确的匹配,因为 Camaro 是由雪佛兰制造的。
但是,我得到这个错误...
二元运算符“==”不能应用于 'UIImage?' 和 'String'
类型的操作数所以,我尝试将数组更改为...
var carModelList: [UIImage] = [
UIImage(named: "Camaro")!,
UIImage(named: "Mustang")!,
UIImage(named: "Challenger")!
]
var carBrandList: [UIImage] = [
UIImage(named: "Chevy")!,
UIImage(named: "Ford")!,
UIImage(named: "Dodge")!
]
但是,然后在我的两行代码中随机 select 要呈现给用户的图像 ...
carModel.image = UIImage(named: carModelList.randomElement()!)
carBrand.image = UIImage(named: carBrandList.randomElement()!)
我收到这个错误...
无法将类型 'UIImage' 的值转换为预期的参数类型 'String'
向您显示该消息是因为您确实在尝试传递图像,但构造函数需要图像的名称,它是一个字符串。
如果你想这样称呼它:
carModel.image = UIImage(named: carModelList.randomElement()!)
carBrand.image = UIImage(named: carBrandList.randomElement()!)
您的数组必须如下所示:
var carModelList: [String] = [
"Camaro",
"Mustang",
"Challenger"
]
var carBrandList: [String] = [
"Chevy",
"Ford",
"Dodge"
]
另一种选择是使用图像数组这样调用它:
carModel.image = carModelList.randomElement()!
carBrand.image = carBrandList.randomElement()!
确保避免强制展开。
还有,你的String数组和UIImage数组是一样的,如果你想比较它们,请重命名它们。
问题是你使用
let carModelList = ["Camaro",
"Mustang",
"Challenger"]
let carBrandList = ["Chevy",
"Ford",
"Dodge"]
和
var carModelList: [UIImage] = [
UIImage(named: "Camaro")!,
UIImage(named: "Mustang")!,
UIImage(named: "Challenger")!
]
var carBrandList: [UIImage] = [
UIImage(named: "Chevy")!,
UIImage(named: "Ford")!,
UIImage(named: "Dodge")!
]
使用相同的数组名称,这就是为什么当您执行 == swift 时无法理解您使用的是哪个