Swift - перечисление внутри перечисления - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь представить меню действий, основанное на системе сортировки по основному типу и подтипу. Но у меня проблемы с перечислениями.

  • enum:

    enum MaterialClassification: CaseIterable {
        enum Main: String, CaseIterable {
            case clay = "Clay"
            case flux = "Flux"
            case all = "All"
        }
    
        enum Sub {
            enum Clay: String, CaseIterable {
                case kaolin = "Kaolin"
                case ballClay = "Ball Clay"
            }
    
            enum Flux: String, CaseIterable {
                case flux = "Flux"
            }
    
            enum All: String, CaseIterable {
                case all = "All"
            }
        }
    }
    
  • переменные

    // Filter:
      var filterClass: MaterialClassification.Main = .all
      var filterSubClass: MaterialClassification.Sub = .all // Not currently working
    
  • код

      // Add Material Types:
          for materialClassification in MaterialClassification.Main.allCases {
              let newAction = UIAlertAction(title: materialClassification.rawValue, style: .default) { action -> Void in
                  self.filterClass = materialClassification.self
                  self.setFilterButtons(first: self.filterClass)
              }
    

У меня есть 2 разные функции для создания листа действий. Первый работает отлично и использует l oop выше для циклического перебора всех случаев в MaterialClassification.Main.

Моя проблема заключается в попытке использовать тот же / аналогичный l oop, но затем нажмите на MaterialClassification.Sub вместо .Main (через var filterClass ?), чтобы получить правильный список дополнительных настроек.

Очевидно, я мог бы использовать переключатель для его жесткого кодирования, но это звучит не очень поучительно.

...