温馨提示:本文最后更新于
2025-01-19 09:17:55
,某些文章具有时效性,若有错误或已失效,请在下方留言。一对一关系意味着每个 A
对象都有一个对应的B
对象,例如说每个人都有一本护照,或者每只宠物都有一个主人。
例如,如果我们有 Country
和 City
模型,它们之间有一个真正的一对一关系,那么在创建 City
时,我们需要指定它属于哪个 Country
,但在创建 Country
时,我们又需要指定它的 capitalCity
属性。
因此,为了能够创建对象并让 SwiftData 正确推断出关系,你应该始终将关系的两端都设为可选属性,如下所示:
@Model class Country {
var name: String
var capitalCity: City?
init(name: String, capitalCity: City? = nil) {
self.name = name
self.capitalCity = capitalCity
}
}
@Model class City {
var name: String
var country: Country?
init(name: String, country: Country? = nil) {
self.name = name
self.country = country
}
}
通过这种方式,我们的代码变得可行:
let country = Country(name: "China")
let city = City(name: "Shanghai", country: country)
modelContext.insert(city)
不要尝试同时插入 city
和 country
对象—插入其中一个对象会自动插入另一个对象,因为它们之间存在关系。实际上,尝试同时插入它们很可能会抛出一个致命错误,提示信息为:”Duplicate registration attempt for object”。
© 版权声明
THE END
暂无评论内容