【发布时间】:2016-11-20 06:22:27
【问题描述】:
iOS 10 引入了新的度量和单位类。我想在我的核心数据数据库中存储一个 NSMeasurement 或 NSUnit 对象,以便我可以在我的数据库中存储不同的测量值。
有什么好办法吗?由于我的应用程序只会使用所有可用单位的子集,因此理论上我可以创建单位的字符串表示形式,并在需要时使用 switch 语句从中获取实际的单位类。但这感觉过于复杂且容易出错。
【问题讨论】:
iOS 10 引入了新的度量和单位类。我想在我的核心数据数据库中存储一个 NSMeasurement 或 NSUnit 对象,以便我可以在我的数据库中存储不同的测量值。
有什么好办法吗?由于我的应用程序只会使用所有可用单位的子集,因此理论上我可以创建单位的字符串表示形式,并在需要时使用 switch 语句从中获取实际的单位类。但这感觉过于复杂且容易出错。
【问题讨论】:
这两个类都符合NSCoding,因此您可以将它们存储为“可转换”属性。作为可转换对象,您可以直接从属性读取/写入对象值,Core Data 会根据需要自动在对象类型和NSData 之间进行转换。您不需要自己进行任何转换。
【讨论】:
归档NSUnit 会增加大量存储和性能开销。因此,最好将值存储为适当的NSUnit 的baseUnit 的标量类型,并使用NSMeasurementFormatter 在UI 中显示值。
【讨论】: