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
Run Code Online (Sandbox Code Playgroud)检索值类似于:
if let unit = myObject.massUnit {
let value = myObject.massValue
let measurement = Measurement<UnitMass>(value:value, unit:unit)
print("Measurement: \(measurement)")
}
Run Code Online (Sandbox Code Playgroud)这massUnit
是配置属性的方式:
归档时间: |
|
查看次数: |
295 次 |
最近记录: |