过滤时如何安全地解包可选

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)