📌 NSArrayの特徴
- 要素の型は
AnyObject - Swiftの
Arrayとは異なり、ミュータブル(変更可能)でない NSMutableArrayを使うことで変更可能な配列にもできる- Objective-Cや古いAPIとの橋渡しに必要
Swiftでは通常、Array<T> を使いますが、Objective-Cのコードや古いAPIとの互換性のために NSArray を使うことがあります。
🔰 例:NSArrayの作成とアクセス
// NSArrayの作成(Swiftから)
let array: NSArray = ["りんご", "みかん", "バナナ"]
// 要素の取得(as? でキャスト)
if let first = array[0] as? String {
print("最初のフルーツは \(first)") // 最初のフルーツは りんご
}
Swiftからは NSArray を直接使うことができます。要素は AnyObject 型なので、必要に応じてキャストが必要です。
🔄 Swift Arrayとの相互変換
// Swift Array → NSArray
let swiftArray = ["A", "B", "C"]
let nsArray: NSArray = swiftArray as NSArray
// NSArray → Swift Array(型を明示する必要あり)
if let converted = nsArray as? [String] {
print(converted) // ["A", "B", "C"]
}
Swiftの Array と NSArray は相互に変換可能です。as NSArray で変換できます。
⚠️ 注意点
- NSArrayは型安全ではない(中身は
AnyObject) - ミュータブルでないため、要素の追加・削除には
NSMutableArrayを使う必要がある - Swiftでの通常開発には
Array<T>を使うのが一般的
Swiftでは通常、Array<T> を使いますが、Objective-Cのコードや古いAPIとの互換性のために NSArray を使うことがあります。
🧠 使いどころ
- Objective-Cライブラリとの連携
- 古いAPI(例:NSUserDefaults、Notificationなど)との互換
- Any型の値を配列として一時的に扱いたいとき