swift - Swift Core Data:核心数据中的枚举
问题描述
我正在尝试实现一个核心数据模型,该模型有效地反映了我在从特定 API 提取信息时使用的视图模型。我已经对其中的大部分内容进行了排序,但正在为一个属性而苦苦挣扎。有问题的属性是:
enum UnitType: String, Codable {
case psi
case kPa
case litre
case usg = "gallon"
case kmph = "km/hour"
case mph = "miles/hour"
case celsius
case fahrenheit
case kgpmcubed = "kgpercubicmeter"
case lbspusg = "lbsperusg"
case lbspftcubed = "lbspercubicfeet"
case apidensity
case kg = "kilogram"
case lbs = "pound"
}
我需要能够在此处设置枚举值,因为视图控制器使用此 UnitType 属性基于此枚举进行各种计算。如何使用核心数据创建枚举?基本上我需要能够像这样设置这个值:
MyEntity.unitType = viewModel.UnitType
解决方案
您不能将enum
类型存储在 中CoreData
,但可以将其存储在rawValue
. 由于您的枚举有一个 rawValue类型,您可以存储它的 rawValue 并使用枚举的方法String
转换回,如下所示:enum
init
coreDataModel.unitType = viewModel.unitType.rawValue
和:
viewModel.unitType = UnitType(rawValue: coreDataModel.unitType)
注意:从转换rawValue
为enum
类型时,它是可选的,因为String
可以是任何东西,并且不能case
与enum
. 因此,需要提供一个default
值。
推荐阅读
- python - str.contains pandas 返回 'str' 对象没有属性 'contains' 新使用 pandas
- javascript - 如何在不同子域之间共享本地存储?
- python - pip/python:普通站点包不可写
- docker - 如何使用来自 GitHub Packages 的 Docker 镜像?
- ios - RPScreenRecorder.shared().isAvailable 始终为 false
- javascript - Promise {
} on bcrypt - python - 对 pandas 数据框项的迭代
- python - Why my data loop multiple times when I created dictionary?
- excel - Time Calculation Type Mismatch
- amazon-cloudfront - CloudFront - How to forward all request headers to the origin