kitoko552.memo

kitoko552のメモ

NSMutableArrayをSwiftのArrayに変換する

Objective-cSwift共存しているプロジェクトでは、NSMutableArrayをSwiftのArrayに変換したいときがあります。 感覚的に以下のように書きたいのですが、これではコンパイルエラーになってしまいます。

let mutableArray = NSMutableArray(array: ["hoge", "fuga", "poka"])

if let array = mutableArray as? [String] { // ここでコンパイルエラー
    // Do something
}

一度AnyObjectをかませることで変換がうまくいきます。

let mutableArray = NSMutableArray(array: ["hoge", "fuga", "poka"])

if let array = mutableArray as AnyObject as? [String] {
     // Do something
}

追記

上の方法だとうまくいかないことがあったので追記します。
以下のように、一旦NSArrayに変換してからSwiftのArrayに変換することもできます。

let mutableArray = NSMutableArray(array: ["hoge", "fuga", "poka"])

if let array = mutableArray as NSArray as? [String] {
     // Do something
}