Swift 4.2 содержит удивительный кусок кода для перечисления перечислений, и этот вопрос касается не только циклических перечислений.
У меня было такое перечисление:
enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
}
Кроме того, яхочу вернуть какой-то объект (скажем sessionDetails).Поэтому я создал для него расширение.
extension RawRepresentable where RawValue == String {
var details: <Some_Object_Type> {
/// Create & return corresponding object
}
}
Итак, если я хочу получить подробности полуденного сеанса, я могу сделать это так:
MyEnum.session2.details
Хорошо!Теперь я хочу сгруппировать мои сеансы как первый и второй пакет и т. Д. Итак, в Enum есть небольшое добавление кода:
enum MyEnum: String {
case session1 = "Morning"
case session2 = "Noon"
case session3 = "Evening"
case session4 = "Night"
static let firstBatch = [session1.details, session2.details]
static let secondBatch = [session3.details, session4.details]
static let weekendBatch = [session1.details, session4.details]
}
Обратите внимание, что мы не можем использовать сохраненные свойства с перечислениями.Здесь нужно ключевое слово «static».
Что я хочу:
Я хочу получить подробную информацию о пакетных элементах.Следующая строка будет работать:
MyEnum.firstBatch
Она предоставит детали сеанса 1 и 2. (объекты).
Проблема:
ВышеОператор будет выполняться только один раз, поскольку он является статическим.Детали каждого сеанса являются динамическими, и я хочу, чтобы «детали» вызывались каждый раз, когда я использую слово .details
Примечание:
Iдолжен предоставить детали сгруппированных элементов другому методу утилит.Нет способа изменить структуру ввода утилит.Для проверки требуется массив объектов.
Требуется помощь !!