如果你想在 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 class中某个字段不映射到表中如何处理

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

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