今天将内容完善。

使用Userdefault

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Expenses: ObservableObject {
@Published var consumptionList: [Action]{
didSet {
let encoder = JSONEncoder()
if let encoded = try? encoder.encode(consumptionList){
UserDefaults.standard.set(encoded, forKey: "consumptionList")
}
}
}

init() {
if let consumptionList = UserDefaults.standard.data(forKey: "consumptionList") {
let decoder = JSONDecoder()
if let decoded = try? decoder.decode([Action].self, from: consumptionList){
self.consumptionList = decoded
return
}
}

self.consumptionList = []
}
}

列表横滑删除

1.如果需要支持手势,需要在List中使用ForEach

2.建一个移除列表项目的函数

1
2
3
func removeItems(at offsets: IndexSet) {
expenses.items.remove(atOffsets: offsets)
}

3.再在循环下面调用函数

1
.onDelete(perform: removeItems)

因为Userdefault在我用的最新版本中可能出问题了,我以前写的代码包括100day的参考代码都无法使用Userdefault。具体原因我还在检查中。暂时停止该项目。复习和手感找回的差不多了,明天重启100day。