过滤时如何安全地解包可选
How to safely unwrap an optional when filtering
目前我有一段使用 bam 运算符的代码,但它需要解包:
if let tagIds = location.tagIds, !filterSet.matchesTags(tagIds as! [String]) {
return false
}
我试过使用守卫:
guard let tagIds = location.tagIds, let tapgIdsString = tagIds as? [String] else {return}, !filterSet.matchesTags(tapgIdsString) {
return false
}
但它会导致错误,“非空函数应该 return 一个值”
在不知道所有内容是如何声明的情况下很难回答,但听起来你可以说
if let tagIds = location.tagIds as? [String], !filterSet.matchesTags(tagIds)
目前我有一段使用 bam 运算符的代码,但它需要解包:
if let tagIds = location.tagIds, !filterSet.matchesTags(tagIds as! [String]) {
return false
}
我试过使用守卫:
guard let tagIds = location.tagIds, let tapgIdsString = tagIds as? [String] else {return}, !filterSet.matchesTags(tapgIdsString) {
return false
}
但它会导致错误,“非空函数应该 return 一个值”
在不知道所有内容是如何声明的情况下很难回答,但听起来你可以说
if let tagIds = location.tagIds as? [String], !filterSet.matchesTags(tagIds)