从 Objective-C 转换后,我在 Swift 中遇到问题。谁能帮我解决这个问题?
let brand: GymBrand = GymBrand.brandForName(name:self.gym.brand)
if brand && brand.logoImageName {
} else {
}
我的 Objective-C 代码:
GYMBrand *brand = [GYMBrand brandForName:self.gym.brand];
if (brand && brand.logoImageName) {
}else {
}
错误屏幕:
最佳答案
你需要做的是阅读 swift 中的可选项。
这些是一些很好的引用资料。有两种主要方法可以实现您想要的。
if let brand = GymBrand.brandForName(name:self.gym.brand) ,
let imageName = brand.logoImageName {
//brand is never nil here
//brand.logoImageName is never nil here
} else {
}
我们在这里所做的是我们假设 GymBrand.brandForName(name:self.gym.brand)
可以是可选的,这意味着它可以包含 nil 值。通过使用 if let,我们确保在 if block 内,品牌的值(value)永远不会为零。
但是假设我们不想在 block 内使用它,而是在函数的任何地方使用它。然后我们可以使用一个守卫
。
guard let brand = GymBrand.brandForName(name:self.gym.brand) ,let imageName = brand.logoImageName else {
//brand is nil here
//brand.logoImageName is nil here
}
关于swift - 无法将类型的值转换为预期的参数类型 'Bool',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122058/