我有一个如下所示的警卫声明,如果结果不正确,我需要更改一个变量
func setGif() {
var animalName = (String(format: "%03d", self.animal.speciesId!))
guard animal.isDefault! == true else {
animalName = animalName + "-merg"
return
}
let gif = UIImage(gifName: animalName)
self.gifIBO.setGifImage(gif, manager: gifManager)
gifIBO.contentMode = UIViewContentMode.center
}
这样做会显示gif的真实值,而不显示错误的gif。如果警卫队出了错,我就需要用新值搜索gif名称。我在这里做错了什么?
最佳答案
这是对guard
的不当使用。 guard
退出当前范围,并且您不想这样做;您想继续前进。因此,只需使用旧的if
即可。 (也不要将Bool与true
作为条件进行比较; Bool是条件。)
if animal.isDefault! {
// it's true, do one thing
} else {
// it's false, do a different thing
}
就您而言,您可能只需要
if
:var animalName = (String(format: "%03d", self.animal.speciesId!))
if !(animal.isDefault!) {
animalName += "-merg"
}
let gif = UIImage(gifName: animalName)
关于ios - 在Swift中更改Guard语句中的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41421323/