Meet SwiftData

RSS for tag

Discuss the WWDC23 Session Meet SwiftData

Posts under wwdc2023-10187 tag

3 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

CloudKit failed due to SwiftData used in both WatchOS and WidgetExtension
I have a WidgetExtension using SwiftData (same ModelContainer setup used in the WatchApp: @main struct Watch_Widget: Widget { let kind: String = "Watch_Widget" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: Provider()) { entry in Watch_WidgetEntryView(entry: entry) .modelContainer(for: [Model1.self, Model2.self]) } .configurationDisplayName("App") .description("descriptions") } } Here's the same model used in the widget view: struct Watch_WidgetEntryView : View { @Query var models: [Model1] var body: some View { let gaugeVal = models.count Gauge(value: gaugeVal, in: 0...60) { Text("min") } currentValueLabel: { Text(String(Int(gaugeVal))) } .gaugeStyle(.accessoryCircular) .widgetLabel { Text("\(models.count) models") } .containerBackground(.fill.tertiary, for: .widget) } } When I build the WidgetExtension, the following error was thrown and the CK data isn't loaded properly: CloudKit setup failed because there is another instance of this persistent store actively syncing with CloudKit in this process.
2
0
1.2k
Jan ’24
Notifications not working on ModelContext
I've been testing out SwiftData but haven't bee able to get ModelContext notifications working. I've tried both an objc observer and for await patterns but it never fires. If I listen for the older nsmanagedcontext notifications they are firing, but I am hoping that the new ones give an ID instead of an objectId. Has anyone got these working? Attempt 1: class NotificationObserver { init() { let didSaveNotification = ModelContext.didSave NotificationCenter.default.addObserver(self, selector: #selector(didSave(_:)), name: didSaveNotification, object: nil) } @objc func didSave(_ notification: Notification) { print(notification.name) } } Attempt 2: class NotificationObserver { init() { let didSaveNotification = ModelContext.didSave Task { for await note in NotificationCenter.default.notifications(named: didSaveNotification) { print(note) } } } }
8
3
1.6k
1w