我尝试使用下一个代码在后台线程上执行一些 SwiftData 工作,当我将“严格并发检查”设置为“完成”时,我收到一条警告消息。 “列表项”是一个 SwiftData 模型。 代码:
@ModelActor
actor DataModelActor {
func configureNewListItem() -> ListItem {
let newListItem = ListItem(index: 0, pinIndex: 0)
modelContext.autosaveEnabled = false
modelContext.insert(newListItem)
return newListItem
}
}
交战信息:
我从以下位置获得“modelContext”:
@Environment(\.modelContext) private var modelContext
如何修复警告消息(我不想忽略它)或者是否有其他方法通过避免主线程来使用 SwiftData?请。
@Model
类不符合 Sendable
,所以你不能将它们传递到 Actor 边界。但它们的标识符是这样你可以传递对象的 id。
func configureNewListItem() -> ListItem.ID {
let newListItem = ListItem(index: 0, pinIndex: 0)
modelContext.autosaveEnabled = false
modelContext.insert(newListItem)
return newListItem.id
}