【Swift/SwiftUI】辞書型データで使用できるメソッド一覧

本記事では辞書型データで使用可能なメソッドの一覧を紹介していきます。

辞書型データを扱う上でデータの書き換えに必要な書き換えや削除などの機能を提供をしているメソッドについて解説していきます!

メソッド一覧

キーに対応するvalueを書き換える

updateValueメソッドを使用することで、辞書内のパラメータに指定したkeyのvalueを書き換えます。

戻り値として更新前の該当keyのvalueをオプショナル型で取得することができます。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
var updated_val = kamoku.updateValue(90, forKey: "英語")
print(updated_val!)  //実行結果:80

また、辞書内に存在しないkeyを指定してupdateValueメソッドを実行した場合には、辞書に新規にデータを追加することができます。戻り値として元々要素が存在していないため、nilが返却されます。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
var updated_val = kamoku.updateValue(50, forKey: "家庭科")
print(updated_val!)  //実行結果:nil

代入で辞書へのデータの追加・更新を行う処理との違いとして、対象keyの更新前のvalueを確認できることが大きなメリットとなります。これにより、意図しないkeyの更新や追加を防ぐことができます。

keyに対応するvalueを削除

removeValueメソッドを使用することで、パラメータに指定したkeyの要素を辞書から削除することができます。戻り値としてオプショナル型の削除したvalueを返却します。

以下の例で辞書内から対象データが削除され、戻り値として削除対象のvalueが返却されることが確認できます。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
var removed_val = kamoku.removeValue(forKey: "英語")
print(kamoku)  //実行結果:["国語":75,"数学":100,"理科":90,"社会":60]
print(removed_val) //実行結果:80

また、辞書内に存在しないkeyを指定した場合には削除は実行されず、戻り値としてnilが返却されます。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
var removed_val = kamoku.removeValue(forKey: "家庭科")
print(removed_val) //実行結果:nil

辞書の値を一括で更新

mapValuesを使用することで、辞書内のvalueの値を一括で変更した辞書データを取得することができます。以下の例では、辞書のvalueに一括で10を加算しています。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
var newKamoku = kamoku.mapValues { $0 + 10 }
print(newKamoku)  //実行結果:["国語":85,"数学":110,"英語":90,"理科":100,"社会":70]
print(kamoku)  //実行結果:["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]

mapValueでは元の辞書の値は変更されず、変更後の新しい辞書が返却されます。

クロージャの中にある「$0」は、クロージャ内での省略記法で第一引数を意味します。今回の例で言うと、kamokuという辞書そのものを第一引数として扱っています。

条件に合致した要素だけを取得

filterを使用することで、クロージャ内で指定した条件に合致する辞書のデータのみを取得することができます。「$0.value」を指定することで、辞書内の全てのvalueにアクセスすることができます。

このメソッドも元の辞書の値を変更せず、新しい辞書データを返却します。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
var filterKamoku = kamoku.filter { $0.value >= 80 }
print(filterKamoku)  //実行結果:["国語":85,"数学":110,"英語":90,"理科":100,"社会":70]
print(kamoku)  //実行結果:["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]

また、辞書内に条件に合致する要素が存在しない場合には空の辞書データを返却します。

条件に合う要素があるか確認

containsを使用することで、クロージャ内に指定した条件に合致した要素が存在しているかの結果を真偽値のtrueかfalseで返却します。

var kamoku = ["国語":75,"数学":100,"英語":80,"理科":90,"社会":60]
let hasPerfect = kamoku.contains { $0.value == 100 }
print(hasPerfect)  //実行結果:true

let hasHalf = kamoku.contains { $0.value == 50 }
print(hasHalf)  //実行結果:false

最後に

本記事では、Swiftの辞書型データで使用可能なメソッドの一覧について解説してきました。

他にも辞書データの基本的な宣言、参照方法についてや辞書データで使用可能なプロパティについて紹介する記事も書いていますのでそちらもご確認ください。