WCDB
中要保存自定义枚举,需要实现ColumnCodable
协议,ColumnCodable
协议包含ColumnDecodable
和ColumnEncodable
。
示例:
/// 定义枚举
enum MyEnum: Int32, ColumnCodable {
case oneEnum = 1
case twoEnum = 2
case threeEnum = 3
case fourEnum = 4
static var columnType: ColumnType {
.integer32
}
/// ColumnDecodable
init?(with value: Value) {
self.init(rawValue: value.int32Value)
}
/// ColumnEncodable
func archivedValue() -> Value {
Value(self.rawValue)
}
}
注意:在decode和encode方法中不要将Value改成基础数据类型(有文章说需要将Value改成Int32),否则会一直报错
之后按一般的基础数据保存即可。