Ben*_*ker 5 key swift swift-data swift-keypath swiftui
我有以下型号:
@Model
class Game {
var name: String
var firstReleasedOn: Date?
@Relationship(deleteRule: .cascade, inverse: \QueueEntry.game)
var queueEntry: QueueEntry?
init(
name: String,
firstReleasedOn: Date?
) {
self.name = name
self.firstReleasedOn = firstReleasedOn
}
}
Run Code Online (Sandbox Code Playgroud)
@Model
public class QueueEntry {
var game: Game?
var createdOn: Date
var order: Int
init(order: Int) {
self.createdOn = .now
self.order = order
}
}
Run Code Online (Sandbox Code Playgroud)
我想用List
按游戏发布日期排序的所有条目填充 a ,因此我有以下内容:
struct QueueView: View {
@Query(sort: [SortDescriptor(\QueueEntry.game?.firstReleasedOn)])
private var entries: [LocalData.QueueEntry]
var body: some View {
List(entries) { entry in
Text(entry.game.name ?? "")
}
}
}
Run Code Online (Sandbox Code Playgroud)
在 Debug 中运行上面的代码是完全没问题的。但是,在 Release 中运行会引发以下错误:
SwiftData/DataUtilities.swift:65:致命错误:无法找到 \QueueEntry。<计算的 0x00000001049cd3e0 (可选)>?.<计算的 0x00000001049cd440 (可选)> 在带有字段 [SwiftData.Schema.PropertyMetadata(name: "game") 的 QueueEntry 上,键路径:\QueueEntry。<计算的0x00000001049e3814(可选)>,defaultValue:nil,元数据:nil),SwiftData.Schema.PropertyMetadata(名称:“createdOn”,键路径:\QueueEntry。<计算的0x00000001049e40e8(日期)>,defaultValue: nil,元数据:nil),SwiftData.Schema.PropertyMetadata(名称:“order”,键路径:\QueueEntry。<计算的0x00000001049e49ac(Int)>,defaultValue:nil,元数据:nil)]
QueueEntry.game
需要是可选的,因为使其成为非可选并尝试在 init 中创建关系会导致Joakim Danielson在此解释的NSInvalidArgumentException
推理。
这只是 SwiftData 的一个 bug/问题,需要 Apple 解决吗?Game
我是否可以实施其他一些解决方法来保持和之间关系的完整性QueueEntry
?
归档时间: |
|
查看次数: |
218 次 |
最近记录: |