我有 2 个漂亮的模型,想为它们创建一些虚拟预览数据,但我遇到了错误:
非法尝试在不同上下文中的对象之间建立“人”关系
错误发生在这里:
@MainActor
let previewContainer: ModelContainer = {
do {
let container = try ModelContainer(
for: Person.self, Item.self,
configurations: ModelConfiguration(isStoredInMemoryOnly: true)
)
let person = Person.dummy()
container.mainContext.insert(person)
for i in 0 ..< 12 {
let item = Item.dummy(i, person: person) //ERROR!
container.mainContext.insert(item)
}
return container
} catch {
fatalError("Failed to create container \(error)")
}
}()
Run Code Online (Sandbox Code Playgroud)
我正在使用 Xcode 15 beta 8。知道我做错了什么吗?
以下是我的模型供参考:
项目型号
@Model
final class Item {
var note: String
var person: Person
init(note: String, person: Person) {
self.note = note
self.person = person
}
static func dummy(_ index: Int, person: Person) -> Item {
return Item(
note: "Item number \(index)",
person: person
)
}
}
Run Code Online (Sandbox Code Playgroud)
人物模型
@Model
final class Person {
var name: String
@Relationship(
deleteRule: .cascade,
inverse: \Item.person
)
var items: [Item] = []
init(name: String, items: [Item] = []) {
self.name = name
self.items = [Item]
}
static func dummy() -> Person {
return Person(
name: "John Doe"
)
}
}
Run Code Online (Sandbox Code Playgroud)
在最新的测试版中遇到了类似的情况。
WWDC 视频没有明确提及这一点,但查看他们的数据模型,似乎所有@Relationship字段都需要是:
例如:
@Model
final class Trip {
var destination: String?
var end_date: Date?
var name: String?
var start_date: Date?
@Relationship(.cascade)
var bucketListItem: [BucketListItem] = [BucketListItem]() //<--
@Relationship(.cascade)
var livingAccommodation: LivingAccommodation? //<--
}
Run Code Online (Sandbox Code Playgroud)
尝试设置:
var person: Person?
Run Code Online (Sandbox Code Playgroud)
在您的项目模型中。
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |