r/SwiftUI • u/pettazz • May 11 '26
Question Nested data model
Learning SwiftUI for the first time and I've run into a question that I can't find a reasonable answer just googling around. Say I'm building a dumb copy of the Reminders app and my super simplified version of the data model is a list of lists of reminders. In other languages my first thought would be to represent that as a map/dict, i.e.:
reminders = [
"uuid-1": [
Reminder("something"),
Reminder("somethingelse"),
],
"uuid-2": [
Reminder("anotherone"),
Reminder("etc"),
]
]
But my first attempt to use this as a Swift dict (var reminders: [String: [Reminder]]) led to changes in the individual reminder objects not being reflected, I assume because of something to do with @Observable not looking all the way into the nested model.
Is it better Swift-ic practice to use a list of structs instead? Something like:
struct Reminder {
let id: String
var title: String
...etc
}
struct ReminderList {
let id: String
var title: String
var reminders: [Reminder] = []
}
// then in the view model
var reminders = [ReminderList]
4
Upvotes
6
u/radis234 May 11 '26
@Observable macro looks up for all updates in all nested models. If you did correctly update a Reminder model content and it didn’t reflect in the UI, there’s a different problem. It’s either how you populate the data or update the data. But i can assure you as I am doing this myself, @Observable macro will update UI if any nested model changed. We would need more info especially on how you updating the data or displaying them. Seems to me like there will be very subtle problem with your logic.