昨天實作完新增跟刪除之後,今天我們要來編輯資料,那因為原本官方的範例是時間戳那這個比較不符合我們要刪除資料的規範,通常刪除資料可能會透過 ID (PrimaryKey) 或是名稱,那今天我們實作的會使用名稱來做刪除條件。
接下來在 Picker 的下面多寫以下的程式碼,這邊我們新增兩個變數是 oldName 跟 name 兩個String,用來表示要將資料庫裡面的什麼名稱改成新的名稱。
然後這邊我有用一個 alert 的提示框,所以需要再創一個 edit 這個 Bool,來判斷有沒有點擊編輯按鈕。
Spacer()
Home(style: style)
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button() {
edit.toggle()
} label: {
Image(systemName: "pencil.circle.fill")
.fontWeight(.light)
.font(.system(size: 18))
}
.alert("Update The name", isPresented: $edit) {
TextField("OddName", text: $oldName)
TextField("NewName", text: $name)
Button("Update", action: update)
Button("Cancel", role: .cancel) { }
}
}
}
Spacer()
我們直接在 ContentView 裡面寫一個function,這邊邏輯是查詢資料庫裡面的資料,如果資料的name 是我要編輯的名字的話,就更新成新的name。
最後要記得把 oldName 跟 name 設成空字串。
func update() {
for data in datas {
if data.name == oldName {
data.name = name
}
}
oldName = ""
name = ""
}