2017-04-26 28 views
1

FMDatabaseを使用していて、オプションの値を含む可能性のあるパラメータの配列を渡したいとします。これはうまくコンパイルされますが、暗黙の強制についての警告を出さずに動作させることができないという問題があります。私が[Any?]配列を渡すと、関数内で警告が出ますが、[Any]配列を渡すと、配列にオプションを追加するたびに警告が出ます。私が行うことができました最高のは、このコードの1つの警告にそれを削減されます。[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オブジェクトとその問題を回避するために、as Anyを使用することができます知っているが、私は理解できません配列でそれを行う方法。

答えて

2

を使用して[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] 
関連する問題