Swift 在没有警告的情况下将[任何?]投给[任何]

Swift 在没有警告的情况下将[任何?]投给[任何],swift,Swift,我正在使用FMDatabase,希望向它传递一个可能包含可选值的参数数组。这可以很好地编译,但问题是如果没有得到关于隐式强制的警告,我就无法让它工作。如果我给它传递一个[Any?]数组,我会在函数中得到一个警告,但是如果我给它传递一个[Any]数组,每当我向数组中添加一个可选项时,我会得到一个警告。我所能做的最好的事情就是用以下代码将其缩减为一个警告: extension FMDatabase { func executeQuery(_ sql: String, withArgument

我正在使用
FMDatabase
,希望向它传递一个可能包含可选值的参数数组。这可以很好地编译,但问题是如果没有得到关于隐式强制的警告,我就无法让它工作。如果我给它传递一个
[Any?]
数组,我会在函数中得到一个警告,但是如果我给它传递一个
[Any]
数组,每当我向数组中添加一个可选项时,我会得到一个警告。我所能做的最好的事情就是用以下代码将其缩减为一个警告:

extension FMDatabase {
    func executeQuery(_ sql: String, withArgumentsIn: [Any?]) -> FMResultSet {
        // generates a warning:
        // "Expression implicitly coerced from 'Any?' to Any"
        return self.executeQuery(sql, withArgumentsIn: withArgumentsIn as [Any])
    }
}

我知道你可以使用
作为任意
来避免常规
Any
对象出现这种问题,但我不知道如何使用数组。

使用
map
[Any?]
转换为
[Any]

let a: [Any?] = [1, true, Optional("hello"), nil]
let b = a.map { $0 as Any }

print(type(of: a))  // Array<Optional<Any>>
print(a)            // [Optional(1), Optional(true), Optional("hello"), nil]

print(type(of: b))  // Array<Any>
print(b)            // [Optional(1), Optional(true), Optional("hello"), nil]
让a:[Any?]=[1,true,可选(“hello”),nil]
设b=a.map{$0如有}
打印(类型:a))//数组
打印(a)/[可选(1)、可选(真)、可选(“你好”),无]
打印(类型:b))//数组
打印(b)/[可选(1)、可选(真)、可选(“你好”),无]