iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0

前文

昨天教完各位如何編輯完資料之後,今天會教各位怎麼排序資料。

建立排序的按鈕

先建立一個 sort 然後是 Bool 型別的,然後在建立一個按鈕用來表示資料要從 小/大 開始排序。

ToolbarItem(placement: .navigationBarLeading) {
    Button() {
        sort.toggle()
    } label: {
        Image(systemName: "arrow.up.arrow.down")
            .fontWeight(.light)
            .font(.system(size: 18))
    }
}

回到 Home 頁面

我們先定義一個變數 sort 是一個 Bool 型態。然後在 init 裡面多打一些程式碼

SortDescriptor

SortDescriptor 是用來定義如何對一個物件陣列進行排序的工具。在 Swift 中,它通常用於以下目的:
指定排序的依據:通過提供一個鍵路徑(key path)來確定要根據哪個屬性進行排序。
決定排序順序:可以設定升序或降序排列。

init(style: String, sort: Bool) {
    self.style = style
    self.sort = sort

    let predicate = #Predicate<DataModel> { data in
        data.style == style
    }

    var sortDescriptor: [SortDescriptor<DataModel>] {
        if sort {
            return [SortDescriptor(\DataModel.name)] // 升序
        } else {
            return [SortDescriptor(\DataModel.name, order: .reverse)] // 降序
        }
    }

    _datas = Query(filter: predicate, sort: sortDescriptor)
}

結尾

SwiftData 會使用到的 CRUD 已經學會了,剩下的新增跟刪除給各位想想該怎麼實現,但是基本上都是相同的方式。


上一篇
Day09 - SwiftData 編輯資料
下一篇
Day11 - SPM(Swift Package Manager)
系列文
Xiang教你進階Swift從有到精30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言