Hi! I am seeing some unexpected behavior when attempting to create a Model
instance with a variable named updated
. I start with a simple Model
:
@Model final public class Item {
var timestamp: Int
var updated: Int
public init(timestamp: Int = 1, updated: Int = 1) {
self.timestamp = timestamp
self.updated = updated
}
}
I then attempt to create an item
instance:
func main() throws {
let schema = Schema([Item.self])
let configuration = ModelConfiguration(isStoredInMemoryOnly: true)
let container = try ModelContainer(
for: schema,
configurations: configuration
)
let modelContext = ModelContext(container)
let item = Item()
print(item.timestamp)
print(item.updated)
}
try main()
The value of item.timestamp
is printing as 1
and the value of item.updated
is printing as 0
.
I have no idea what could be causing that to happen… why would both those values not be printing as 1
? Is there some private API that is somehow colliding with the (public) updated
variable and causing the item
instance to report back with a value of 0
? Is there documentation warning engineers that a variable named updated
is off-limits and results in undefined behavior?
I can fix that by renaming the variable:
@Model final public class Item {
var timestamp: Int
var updatedTimestamp: Int
public init() {
self.timestamp = 1
self.updatedTimestamp = 1
}
}
I am unblocked on this (because renaming the variable seems to work fine)… but is there any insight on why this might be happening in the first place? I am building from Xcode_16_beta_5
. Thanks!