我是Swift的新手,正在致力于将Objective-C代码库迁移到Swift。 我很难找到一种很好的方法来构建涉及OR或对可选对象的方法调用的条件。
说我有2个对象'ojb1'和'obj2'
在Objective-C中,我可以写:
return [obj1 booleanMethod] || [obj2 booleanMethod]
如果两个对象中的任何一个都不为nil并且其方法返回true,则返回true。
在Swift中,我必须:
if let obj1 = obj1, obj1.booleanMethod() {
return true
} else if let obj2 = obj2, obj2.booleanMethod() {
return true
}
return false
或
return ((obj1 != nil && obj1!.booleanMethod()) || (obj2 != nil && obj2!.booleanMethod())
是否有更好/更清洁/更短的方法来做到这一点?
谢谢
答案 0 :(得分:2)
在Swift中,您可以将==
与可选参数一起使用。在这种情况下,直接比较Bool
和true
很有用。
return obj1?.booleanMethod() == true || obj2?.booleanMethod() == true
对于nil
可选,与true
的比较将为假。
答案 1 :(得分:1)
快速将obj1
和obj2
作为2个可选内容,然后尝试
return obj1?.booleanMethod() ?? false || obj2?.booleanMethod() ?? false