UserDefaults trong Swift 5.1
Bài đăng này đã không được cập nhật trong 5 năm
UserDefaults trong Swift 5.1
Trong Ứng dụng iOS để lưu dữ liệu nhỏ, chúng ta sẽ sử dụng UserDefaults. Đây là giải pháp chuyên nghiệp để dễ dàng xử lý những điều này.
UserDefaults
Tại sao lại là UserDefaults? Bởi vì đôi khi chúng ta cần lưu một lượng nhỏ dữ liệu như cài đặt, trạng thái hoặc bản ghi trong ứng dụng của mình và chúng ta có thể sử dụng dữ liệu này thay cho Core Data. Điều này có thể hỗ trợ lưu các loại dữ liệu như Bool, Dictionary, Int, String, Data, và Array.
Lưu giá trị kiểu String
UserDefaults.standard.set("Doom", forKey: "name")
Lấy ra giá trị String
let name = UserDefaults.standard.string(forKey: “name”) ?? “”
Tại sao chúng ta sử dụng "name" ở đây? Đây là key được sử dụng để lưu và lấy dữ liệu. Mỗi phần dữ liệu chúng ta có thể lưu trữ bằng key duy nhất, nếu không, nó sẽ thay thế dữ liệu cũ bằng dữ liệu mới. Thêm một ví dụ về kiểu dữ liệu ...
Lưu giá trị Boolean
UserDefaults.standard.set(true, forKey: “userlogin”)
Lấy ra giá trị Boolean
let status = UserDefaults.standard.bool(forKey: “userlogin”) ?? false
Một ví dụ nhỏ để quản lý chi tiết người dùng
struct Defaults {
static let (nameKey, addressKey) = ("name", "address")
static let userSessionKey = "com.save.usersession"
private static let userDefault = UserDefaults.standard
/**
Nó được sử dụng để lấy ra và gán giá trị người dùng vào UserDefaults
*/
struct UserDetails {
let name: String
let address: String
init(_ json: [String: String]) {
self.name = json[nameKey] ?? ""
self.address = json[addressKey] ?? ""
}
}
/**
- Lưu chi tiết người dùng
- Inputs - name `String` & address `String`
*/
static func save(_ name: String, address: String){
userDefault.set([nameKey: name, addressKey: address],
forKey: userSessionKey)
}
/**
- Tìm nạp các giá trị thông qua Model `UserDetails`
- Output - `UserDetails` model
*/
static func getNameAndAddress()-> UserDetails {
return UserDetails((userDefault.value(forKey: userSessionKey) as? [String: String]) ?? [:])
}
/**
- Xoá chi tiết người dùng trong UserDefault qua key "com.save.usersession"
*/
static func clearUserData(){
userDefault.removeObject(forKey: userSessionKey)
}
}
Sử dụng thế nào?
Lưu thông tin người dùng
Defaults.save("Doom", address: "Hai Duong")
Lấy ra thông tin:
let name = Defaults.getNameAndAddress.name
Xoá thông tin:
Defaults.clearUserData()
Kết luận
Đây là cách dễ nhất để xử lý ứng dụng của bạn, một lượng nhỏ dữ liệu để lưu trữ trong UserDefaults. Nó rất dễ sử dụng và hỗ trợ khá nhiều loại giá trị như Dictionary, Array, Any, String, Int, Float, Double, Bool, URL. Một điều quan trọng hơn là UserDefaults là một thread-safe Lưu ý: Tránh sử dụng UserDefaults.standard.synchronize()
All rights reserved