[quote='854498022, DTS Engineer, /thread/797050?answerId=854498022#854498022']
item.persistentModelID should be valid, even before item is persisted to the store.
[/quote]
I must be missing something. It appears to return a temporary Identifier that can't be fetched.
@ModelActor actor DataActor {
func createItem() throws {
var newIdentifier: PersistentIdentifier? = nil
try modelContext.transaction {
let item = Item(timestamp: Date())
modelContext.insert(item)
newIdentifier = item.persistentModelID
print("Created Item: \(item.timestamp)")
}
print("New identifier: \(String(describing: newIdentifier!))")
if let model: Item = try existingModel(for: newIdentifier!) {
print("Found model with \(model.timestamp)")
} else {
print("Failed to load model")
}
}
func existingModel<T: PersistentModel>(for persistentIdentifier: PersistentIdentifier) throws -> T? {
if let model: T = modelContext.registeredModel(for: persistentIdentifier) {
return model
}
var fetchDescriptor = FetchDescriptor<T>(predicate: #Predicate { $0.persistentModelID == persistentIdentifier })
fetchDescriptor.fetchLimit = 1
return try modelContext.fetch(fetchDescriptor).first
}
}
Output:
Created Item: 2025-08-20 18:33:55 +0000
New identifier: PersistentIdentifier(id: SwiftData.PersistentIdentifier.ID(backing: SwiftData.PersistentIdentifier.PersistentIdentifierBacking.temporaryIdentifier(SwiftData.TemporaryPersistentIdentifierImplementation)))
Failed to load model
Topic:
App & System Services
SubTopic:
iCloud & Data
Tags: