如果你想在 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:)' 函数中编码。在查询和插入操作中,这个字段被忽略。

Swift GRDB 中如何处理不映射到表的字段

原文地址: https://www.cveoy.top/t/topic/oRgt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录