Code: Select all
import SwiftData
@Model
class TerritoryGroup {
var name: String?
var territories: [Territory]?
init(name: String) {
self.name = name
}
}
@Model
class Territory {
var name: String?
var territoryGroup: TerritoryGroup?
init(name: String) {
self.name = name
}
}
< /code>
Einfach und nichts kompliziertes. Im Cloudkit habe ich 20 Modelle, und Territory und Territorygroup haben noch einige weitere Eigenschaften in Cloudkit gespeichert. Ich weiß nicht, ob es wichtig ist, aber ich habe nur zwei davon abgebildet, um zu überprüfen, wie es funktioniert. Ich bin mir im CloudKit -Geschäft ziemlich sicher, dass es ein TerritoryGroup -Objekt und 9 Territory
Code: Select all
import SwiftData
import SwiftUI
@main
struct FieldService: App {
var sharedModelContainer: ModelContainer = {
let schema = Schema([
TerritoryGroup.self,
Territory.self,
])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
do {
return try ModelContainer(for: schema, configurations: [modelConfiguration])
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()
@UIApplicationDelegateAdaptor(ApplicationDelegate.self) var viewappDelegate
var body: some Scene {
WindowGroup {
StartView()
}
.modelContainer(sharedModelContainer)
}
}
< /code>
Wie zeige ich das in meiner App an? < /p>
import CoreLocation
import SwiftUI
struct StartView: View {
@Environment(\.modelContext) private var modelContext
@Query private var territoryGroups: [TerritoryGroup]
@Query private var territories: [Territory]
var body: some View {
List{
ForEach (territoryGroups) { item in
Text(item.name ?? "abc")
}
ForEach (territories) { item in
Text(item.name ?? "def")
}
}
}
}
Einfach einfach zeigt es Default -Werte an. Warum? Ich bin mir nicht sicher, ob es mehr benötigt wird, aber es ist. Natürlich mit allen 20 Entitäten