【Swift/SwiftUI】配列の宣言と使用方法

本記事では、Swiftにおける配列というデータ型の意味、配列の宣言方法、データの入れ方から取り出し方まで丁寧に解説していきます。

配列とは

配列は、複数のデータを格納することができるコレクションというデータ型の入れ物の一つです。配列には複数のデータを格納したり、格納したデータを更新したり、取り出すことができます。

配列に格納できるデータの個数には制限がなく、いくらでもデータの追加・取り出しを行うことができます。

配列を使用することで、複数の関連するデータをそれぞれ別の変数に入れるのではなく、一つのデータの集合体として扱うことができるため、実装を進める上でも便利です。

しかし、配列に入れるデータのデータ型は同じでなければならないという制限があるため、IntとStringのデータなどを1つの配列に格納することができない点には注意が必要です。

配列の宣言

配列を宣言し、作成していく方法を2つ紹介していきます。

型を指定して宣言

配列内に格納する予定のデータ型を指定して初期値を代入せずに入れ物だけを用意する方法になります。

空の配列を作成する方法はいくつかありますので、まとめてご紹介します。

var fruits = [String]()
var numbers = Array<Int>()
var week: [String] = []

これらのコードは全て空の配列を配列を宣言するコードとなり、すでに配列のインスタンスは変数に代入されていますが、件数が0件の配列です。

fruitsとweekは文字列型のデータが入る配列、nubersはInt型のデータが入る配列として宣言し、宣言時のデータ型の値のみを配列に追加していくことができます。

これらの配列を「.count」を使用して実際にカウントしてみると0が表示されることが確認できます。

fruits.count    //0
numbers.count   //0
week.count      //0

初期値を代入

配列を宣言すると同時に初期値を代入する方法です。

var members = ["田中","山本","山田"]

変数に対して、[]で括って代入したい値を入れていきます。この時、各値はカンマで区切ります。

初期値を直接代入して配列を宣言する方法では、「型推論」という代入されたデータによって変数の値を推論する仕組みによってString型のデータを格納する配列であることが確定します。

一般的には配列を作成する際には入れたいデータが決まっている場合が多いため、空の配列を作成する方法よりこちらの初期値代入を使用することになります。

配列要素の取り出し

作成した配列の中から任意の位置の配列を指定して取り出す方法をご紹介します。

配列から指定した値を取り出すには、配列のインデックス番号を指定します。「配列名[インデックス番号]」という形で指定し、インデックス番号は配列の先頭に入っている値を0として始まります。

var members = ["田中","山本","山田"]

members[0]    //田中
members[1]    //山本
members[2]    //山田

以下のように配列の持っている要素数を超えるインデックス番号を指定するとエラーとなってしまうため、.countで要素数を確認するなどして、未然にエラーを防ぐ工夫も必要です。

members[3]    //エラーとなる

配列への追加

宣言した配列に対して、後から値を追加したり、配列同士を結合していく方法を説明していきます。

値を後から追加

配列にはappendプロパティが用意されており、配列の最後尾に値を追加することができます。

var members = ["田中","山本","山田"]
members.append("高橋")
print(members)                 //["田中", "山本", "山田", "高橋"]

配列の任意の箇所に値を追加する方法もあり、insertプロパティを使用することで実現できます。insertプロパティは「insert(“追加したい値”, at: インデックス番号)」という形式で配列に追加します。

var members = ["田中","山本","山田"]
members.insert( "伊藤", at: 1)
print(members)       //["田中", "伊藤", "山本", "山田"]

伊藤という名前をインデックス番号1を指定して追加したため、配列の先頭から2番目に追加されたことを確認できました。

配列同士を結合

それぞれ宣言した配列同士を結合する方法もあり、方法はシンプルで「+」演算子やインクリメントなどで使用する「+=」を使用することで簡単に配列同士を結合することができます。

var members = ["田中","山本","山田"]
var secondMembers = ["相田","鈴木", "佐藤"]
var newMembers = members + secondMembers
print(newMembers)
// ["田中", "山本", "山田", "相田", "鈴木", "佐藤"]

+演算子では、それぞれの配列を結合した値を新しい別の変数に代入しているのに対し、+=変数を使用した場合には既存の変数の値を変更することができます。処理の用途によって使い分けることができます。

var members = ["田中","山本","山田"]
var secondMembers = ["相田","鈴木", "佐藤"]
members += secondMembers
print(members)
// ["田中", "山本", "山田", "相田", "鈴木", "佐藤"]

配列を初期化

すでに値の入っている配列を初期化して空にするためには空の配列を代入します。

「=」演算子を使うと値の追加や配列の結合ではなく、値の代入となり、空の配列を入れてあげることで値を上書きすることができます。

var members = ["田中","山本","山田"]
members = []        //[ ]

配列同士の結合を目的としているときに誤って「=」演算子を使用してしまうと、配列が書き換えられて想定と異なる値となってしまう点には注意が必要です。

var members = ["田中","山本","山田"]
var secondMembers = ["相田","鈴木", "佐藤"]
members = secondMembers
print(members)       //["相田","鈴木", "佐藤"]

最後に

本記事では、Swiftの配列の宣言方法、初期化の方法や値の追加・結合について解説してきました。最後に要点をまとめます。

  • 配列の宣言には、データ型を指定した空の配列を作成する方法と初期値を代入する方法がある
  • 値の追加には、「append」「insert」プロパティがある
  • 配列同士の結合には、「+」「+=」演算子を使用することができる

他にもSwiftUIを利用したリストの作成方法やリストにスワイプアクションを付与する方法についても解説していますのでぜひご確認お願いします。