Posted at

userDefaultsを使った配列の保存・取得・操作

More than 1 year has passed since last update.

userDefaultsを使用した1次元配列・2次元配列の扱い方について備忘録として掲載します。

仕様上、大量のデータの保存には向いていません。その際はDBを使った方が高速に動作するでしょう。


1次元配列の保存・取得


ViewController.swift

import UIKit

class ViewController: UIViewController {

// userDefaultsの定義
var userDefaults = UserDefaults.standard

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

// userDefaultsに格納したい値
let maxSpeed: [Double] = [120.05, 134.25, 80.5]
// 配列の保存
userDefaults.set(maxSpeed, forKey: "udMaxSpeed")

// userDefaultsに保存された値の取得
let getMaxSpeed:[Double] = userDefaults.array(forKey: "udMaxSpeed") as! [Double]
print(getMaxSpeed)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}



console

[120.05, 134.25, 80.5]



値の追加

ここから先はViewDidLoad()内の処理のみ記載します。


ViewController.swift

// userDefaultsに格納したい値

let maxSpeed: [Double] = [120.05, 134.25, 80.5]
// 配列の保存
userDefaults.set(maxSpeed, forKey: "udMaxSpeed")

// userDefaultsに保存された値の取得
var getMaxSpeed:[Double] = userDefaults.array(forKey: "udMaxSpeed") as! [Double]
// 値の追加
let addMaxSpeed: Double = 100.0
getMaxSpeed.append(addMaxSpeed)
print(getMaxSpeed)



console

[120.05, 134.25, 80.5, 100.0]



2次元配列の保存・取得


ViewController.swift

// userDefaultsに格納したい値

let count: [[Int]] = [[20, 34, 50, 12], [21, 44, 38, 40]]
// 配列の保存
userDefaults.set(count, forKey: "udCount")

// userDefaultsに保存された値の取得
let getCount: [[Int]] = userDefaults.array(forKey: "udCount") as! [[Int]]
print(getCount)



console

[[20, 34, 50, 12], [21, 44, 38, 40]]



1次元配列のデータを末尾に追加する


ViewController.swift

// userDefaultsに格納したい値

let count: [[Int]] = [[20, 34, 50, 12], [21, 44, 38, 40]]
// 配列の保存
userDefaults.set(count, forKey: "udCount")

// userDefaultsに保存された値の取得
var getCount: [[Int]] = userDefaults.array(forKey: "udCount") as! [[Int]]
// 追加したい値
let addData: [Int] = [10, 37, 62, 19, 43,85]
// 値の追加
getCount.append(addData)
print(getCount)



console

[[20, 34, 50, 12], [21, 44, 38, 40], [10, 37, 62, 19, 43, 85]]



追加したデータの削除


ViewController.swift

// userDefaultsに格納したい値

let count: [[Int]] = [[20, 34, 50, 12], [21, 44, 38, 40]]
// 配列の保存
userDefaults.set(count, forKey: "udCount")

// userDefaultsに保存された値の取得
var getCount: [[Int]] = userDefaults.array(forKey: "udCount") as! [[Int]]
// 追加したい値
let addData: [Int] = [10, 37, 62, 19, 43,85]
// 値の追加
getCount.append(addData)

// 末尾の1次元配列を削除
getCount.removeLast()
print(getCount)



console

[[20, 34, 50, 12], [21, 44, 38, 40]]