从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 {
}
错误屏幕:
答案 0 :(得分:2)
你需要做的是阅读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)
可以是可选的,这意味着它可以保持零值。通过使用if,我们确保if块内的品牌价值永远不会为零。
但是我们可以说我们不想在块内部使用它,而是在函数中使用它。然后我们可以使用guard
。
guard let brand = GymBrand.brandForName(name:self.gym.brand) ,let imageName = brand.logoImageName else {
//brand is nil here
//brand.logoImageName is nil here
}
答案 1 :(得分:1)
这样你可以这样做:(我可以看到,你使用的是brand.logoImageName所以你必须使用这种方式)
if let brand = GymBrand.brandForName(name:self.gym.brand) as? GymBrand, let _ = brand.logoImageName as? String{
//brand is never nil here
//brand.logoImageName is never nil here
} else {
}
答案 2 :(得分:0)
swift中代码的真实面目是:
if let brand = GymBrand.brandForName(name:self.gym.brand), brand.logoImageName != nil {
} else {
}