0%

UserDefault 儲存應用

UserDefault 儲存應用

1. 儲存 struct

struct 格式範例:

1
2
3
4
5
6
7
8
9

struct UserInfo: Codable {

var name:String?
var email:String?
var id:String?

}

要儲存的 struct 必須遵守Codable的協定才可使用JSONEncoder作轉換


儲存方法

1
2
3
4
5
6
7
8
9
10

func setUserInfo(userInfo:UserInfo) {

if let value = try? JSONEncoder().encode(userInfo) {

UserDefaults.standard.set(value, forKey: "userInfo")

UserDefaults.standard.synchronize()
}
}
UserDefaults.standard.set(value, forKey: "userInfo") 

這裡的userInfo可以替換成自定義的key


取得方法

1
2
3
4
5
6
7
8
9
10
11
12

func getUserInfo() -> UserInfo? {

if let data = UserDefaults.standard.data(forKey: "userInfo") {

let userInfo = try? JSONDecoder().decode(UserInfo.self, from: data)

return userInfo
}

return nil
}
UserDefaults.standard.data(forKey: "userInfo")

如果沒有key, UserDefaults會回傳空值


2. 儲存顏色

儲存方法

1
2
3
4
5
6
7
8
9

func setPreferColor(color:UIColor) {

UserDefaults.standard.set(NSKeyedArchiver.archivedData(withRootObject: color), forKey: "preferColor")

UserDefaults.standard.synchronize()

}

UIColor 需要透過 archivedData 轉為Data才可儲存,否則之後取出會為nil


取得方法

1
2
3
4
5
6
7
8
9
10
11

func getPreferColor() -> UIColor? {

if let savedData = UserDefaults.standard.object(forKey: "preferColor") as? Data {

return NSKeyedUnarchiver.unarchiveObject(with: savedData) as? UIColor
}

return nil

}

註:
後來找到的參考網站

tags: iOS swift UserDefault