iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

前文

昨天實作完新增跟刪除之後,今天我們要來編輯資料,那因為原本官方的範例是時間戳那這個比較不符合我們要刪除資料的規範,通常刪除資料可能會透過 ID (PrimaryKey) 或是名稱,那今天我們實作的會使用名稱來做刪除條件。

將 Chart 的View 放到 ContentView 裡

接下來在 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()

SwiftData 編輯資料

我們直接在 ContentView 裡面寫一個function,這邊邏輯是查詢資料庫裡面的資料,如果資料的name 是我要編輯的名字的話,就更新成新的name。
最後要記得把 oldName 跟 name 設成空字串。

func update() {
    for data in datas {
        if data.name == oldName {
            data.name = name
        }
    }
    oldName = ""
    name = ""
}

上一篇
Day08 - Chart 圖表搭配SwiftData使用
下一篇
Day10 - SwiftData 動態排序
系列文
Xiang教你進階Swift從有到精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言