iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0

昨天介紹完 SwiftData 中建立模組以及定義其中屬性的 Macro,今天來介紹一下 SwiftData 中重要的東西,ModelContainer。

ModelContainer

首先來介紹一下 ModelContainer,ModelContainer 是模組上下文和持久性儲存之間的代理程式,它會根據提供的模組創建資料庫。

那要如何建立 ModelContainer?有兩種方式,一種是單純的建立一個 ModelContainer,令外一種則是可以自定義 ModelContainer 的設定。

實際操作一次,這是比較簡單的方式,添加 .modelContainer(for: ) 這個 modifier 然後裡面放入要建立資料庫的模組。

import SwiftUI
import SwiftData

@main
struct SwiftDataExampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(for: [Expense.self])
    }
}

另外一種建立方式,這種方式可以自定義你需要的 ModelContainer,包含各種設定,當然也能使用預設設定,定義好之後同樣使用 .modelContainer() 這個 modeifier,只是這次裡面要放的是你已經設定好的 ModelContainer。

import SwiftUI
import SwiftData

@main
struct SwiftDataExampleApp: App {
    let container: ModelContainer = {
        let schema = Schema([Expense.self])
//        let cinfig = ModelConfiguration(name: String?,
//                                        schema: Schema?,
//                                        isStoredInMemoryOnly: Bool,
//                                        allowsSave: Bool,
//                                        groupContainer: ModelConfiguration.GroupContainer,
//                                        cloudKitDatabase: ModelConfiguration.CloudKitDatabase)
        let container = try! ModelContainer(for: schema, configurations: [])
        
        return container
    }()
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .modelContainer(container)
//        .modelContainer(for: [Expense.self])
    }
}

那到這裡 ModelContainer 設定好之後,接下來要處理的就是 ModelContext 的部分,ModelContext 會監控 Model 裡所有變動並且提供一系列操作讓人使用,那今天就先到這裡啦。


上一篇
Day 21:SwiftData(1)
下一篇
Day 23:SwiftData(3)
系列文
SwiftUI學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言