Поскольку ваш enum
уже имеет String
в качестве типа необработанного значения, у вас есть автоматически сгенерированное свойство rawValue
. Это конфликтует с вашей функцией rawValue()
. Однако в этом нет необходимости, поскольку вы можете просто использовать автоматически сгенерированный код:
enum ActivityType: String {
case north, south, east, west, up, down, still
static func value(from rawValue: String?) -> ActivityType {
guard let rawValue = rawValue, let activityType = ActivityType(rawValue: rawValue) else {
return .still
}
return activityType
}
}
Вышеупомянутое делает то же самое, что и ваш код. Конечно, даже в этом нет необходимости, так как вы можете просто использовать ActivityType(rawValue: myString) ?? .still
напрямую.