一个 Swift 属性包装器,允许用户自动在 UserDefaults 中保存和加载对象。它是 AppStorage 的扩展。
import SwiftUI
struct Item {
var i: Int
}
@AppStorage("item") var item = Item(i: Int) // <-- This doesn't work, because AppStorage/UserDefaults doesn't support objects and arrays
简单:像使用 AppStorage 一样使用 LocalStorage。该项必须符合 Codable 协议。您可以将其与对象和数组一起使用。
import LocalStorage
struct Item {
var i: Int
}
@LocalStorage("item") var item = Item(i: Int)
import SwiftUI
import LocalStorage
struct Item: Codable, Identifiable, Equatable {
var id = UUID()
var int: Int
}
struct ContentView: View {
@LocalStorage("items") var items = [Item]()
var body: some View {
NavigationStack {
List {
ForEach(items) { item in
Text("\(item.int)")
}
.onDelete { indexSet in
items.remove(atOffsets: indexSet)
}
}
Button("Add Object") {
items.append(Item(i: Int.random(in: 1...100)))
}
.navigationTitle("LocalStorage Demo")
}
.animation(.easeInOut, value: items)
}
}
数据将永久保存在设备上。
简单:当用户向该值写入内容时,属性包装器会将该数据转换为 JSON,并将其作为二进制数据保存在 UserDefault 中指定的键下。如果用户从该值读取数据,则数据将从 UserDefaults 中获取,并将 JSON 转换为 Swift 对象或数组。请注意,此软件包相当新,可能存在一些错误。如果您发现任何错误,请报告它们以进一步改进软件包。现在是时候尝试使用了。 :D