Aar*_*112 2 generics core-data swift
如何在核心数据中保存和检索通用度量?
我想做的是保存a Measurement<UnitMass>或a Measurement<UnitVolume>。
如下图所示,CoreData设置为接受Generic Measurement<Unit>
但是,当我去设置度量值时会出现错误。说我不允许这样做。我认为泛型的目的是支持这样的用途。
我想念什么?
有关类型不匹配的错误在这里不是重要的部分。真正的问题是,可变形属性仅适用于符合NSCoding或已为其编写自定义值转换器的类。由于Measurement它不是类,也不符合NSCoding,因此不能将其与可转换属性一起使用。
您的选择是
Measurement,请不要保存,保存其值,也不要将其转换为Measurement。ValueTransformer该子类将在Measurement和之间转换Data。我会选择#1。您可以在托管对象子类上添加便捷方法来处理转换。
更新:根据您的Measurement<UnitMass>情况,我会做类似的事情:
Double名为的属性massValue。massUnit以自定义类命名的可变形属性UnitMass(请参见下文)。使用以下方式保存值:
let servingMeasure = Measurement<UnitMass>(value:500, unit:.grams)
myObject.massValue = servingMeasure.value
myObject.massUnit = servingMeasure.unit
检索值类似于:
if let unit = myObject.massUnit {
    let value = myObject.massValue
    let measurement = Measurement<UnitMass>(value:value, unit:unit)
    print("Measurement: \(measurement)")
}
这massUnit是配置属性的方式:
| 归档时间: | 
 | 
| 查看次数: | 295 次 | 
| 最近记录: |