Я сохраняю измерения тела в приложении с использованием Core Data. Эти измерения могут быть типа UnitMass
(то есть вес) или UnitLength
(то есть рост). В приложении эти измерения передаются с использованием Measurement
экземпляров, что позволяет легко конвертировать метрические и британские единицы. В базовых данных значения измерений сохраняются как двойные с использованием единицы измерения baseUnit()
.
Однако я не уверен, как хранить единицу в базе данных. Я придумал это:
enum BodyMeasurementUnit: Int16 {
case mass = 0
case length
static func unit(for value: Int16) -> BodyMeasurementUnit {
switch value {
case 0: return .mass
default: return .length
}
}
}
, что позволяет мне хранить соответствующие единицы по индексу. Но я бы предпочел иметь функцию, которая возвращает UnitMass
или UnitLength
напрямую. У кого-нибудь из вас есть идея получше? Кроме того, хотя использование enum
таким способом позволяет мне легко добавлять дополнительные типы модулей в случае необходимости, я чувствую, что каким-то образом дублирую классы Unit*
Apple, вместо того, чтобы просто расширять их в соответствии с моими потребностями. Кто-нибудь? Спасибо за помощь!