在 Core Data 中存储 NSMeasurement 或 NSUnit

Store NSMeasurement or NSUnit in Core Data

iOS 10 为度量和单位引入了新的 类。我想在我的核心数据数据库中存储一个 NSMeasurement 或 NSUnit 对象,这样我就可以在我的数据库中存储不同的测量值。

有什么好的方法吗?由于我的应用程序只会使用所有可用单位的一个子集,理论上我可以创建单位的字符串表示形式,并在需要时使用 switch 语句从中获取实际单位 类。但这感觉过于复杂且容易出错。

这两个 类 都符合 NSCoding,因此您可以将它们存储为 "transformable" 属性。作为可转换对象,您 read/write 对象值直接 from/to 属性,Core Data 根据需要自动在对象类型和 NSData 之间转换。您不需要自己进行任何转换。

归档 NSUnit 会增加大量存储和性能开销。因此,最好将值存储为适当 NSUnitbaseUnit 的标量类型,并使用 NSMeasurementFormatter 在 UI 中显示值。