在没有CoreData背景的情况下,我在一个应用程序中尝试SwiftData,并不断遇到错误:
对ID为PersistentIdentifier(...)的对象进行重复注册尝试
在阅读文档时,我看到了PersistenceModelID的存在,但我不明白如何使用它。我试图从一些旧的CoreData实现中推断如何防止对象具有重复的UUID,并得到以下不起作用的结果:
let skinData = skinDataResponse.data // an array of objects
for skin in skinData {
var fetchDescriptor = FetchDescriptor<Skin>()
fetchDescriptor.predicate = #Predicate { item in
skin.displayName == item.displayName
// skin.id == item.PersistenModelID <- Tried these unsuccessfully as well
// skin.id == item.id // UUID comparison
}
do {
let existingSkin = try self.modelContext?.fetch(fetchDescriptor)
if existingSkin?.first == nil {
self.modelContext?.insert(skin)
}
} catch {
print("SwiftData Error: \(error)")
}
}
1条答案
按热度按时间tct7dpnv1#
如果您将
id
标记为.unique
,并将autosaveEnabled
保留为默认值true
;你不必担心重复。insert方法适用于创建和更新模型示例,因为模型指示code参数是唯一的。
https://developer.apple.com/documentation/swiftdata/maintaining-a-local-copy-of-server-data