59: SwiftData, part 3

그루두·2024년 7월 5일
0

100 days of SwiftUI

목록 보기
67/108

100 days of swiftui: 59

challenge

All three of these challenges relate to you upgrade project 7, iExpense:

  1. Start by upgrading it to use SwiftData.
  2. Add a customizable sort order option: by name or by amount.
  3. Add a filter option to show all expenses, just personal expenses, or just business expenses.

solution

결과물

1. SwiftData에 data 저장하기

  • import SwiftData
  • Expense를 model로 저장
  • 기존의 expenses는 query 이용
  • 기존의 expense를 swiftData의 방식대로 변경
import Foundation
import SwiftData

@Model
class Expense: Identifiable{
    var id = UUID()
    let name: String
    let type: String
    let amount: Double
    let currencyCode: String

    init(name: String, type: String, amount: Double, currencyCode: String) {
        self.name = name
        self.type = type
        self.amount = amount
        self.currencyCode = currencyCode
    }
}

깃헙 링크

2, 3. sort, filter 설정하기

ExpenseListView를 따로 만들고, 이 뷰의 생성자에 따라 순서나 보이는 Expense를 여과했다. ContentView의 navigation에 Picker를 추가해 정렬 방식이나 필터 방식을 추가할 수 있도록 설정했다.

깃헙 링크

추가. list에서 삭제하기

만들어진 Expense의 인스턴스를 하나씩 삭제할 수 있도록 설정했다.

깃헙 링크

profile
계속 해보자

0개의 댓글

관련 채용 정보