Swift GRDB 中如何处理不映射到表的字段
如果你想在 Swift GRDB 类中定义一个字段,但是不希望它映射到实际的表中,可以使用 'transient' 属性包装字段。例如:
class MyModel: Record {
var id: Int64?
var name: String
'transient var tempData: Data
init(id: Int64?, name: String, tempData: Data) {
self.id = id
self.name = name
self.tempData = tempData
super.init()
}
override class var databaseTableName: String {
return "my_table"
}
override func encode(to container: inout PersistenceContainer) {
container["id"] = id
container["name"] = name
// 不需要映射到表中的字段不需要在这里编码
}
override func didInsert(with rowID: Int64, for column: String?) {
id = rowID
}
}
在这个例子中,'tempData' 字段被标记为 'transient',因此不需要在 'encode(to:)' 函数中编码。在查询和插入操作中,这个字段被忽略。
原文地址: https://www.cveoy.top/t/topic/oRgt 著作权归作者所有。请勿转载和采集!