Анализировать и перебирать статические / вычисляемые свойства в перечислении - PullRequest
0 голосов
/ 19 февраля 2019

Протокол CaseIterable позволяет вам перебирать случаи перечисления, я хочу сделать это, но для статических свойств, а также получать его значения.Как бы вы реализовали теоретический протокол PropertyIterable?

Я пытался использовать отражение (Mirror(reflecting:)), оно работает на структурах, но не на перечислениях

Например:

protocol PropertyIterable {
  var allProperties: [String: T] { get }  //will get you [String: Any/T]
}

FYI : Возможно вычисляемое свойство allProprties не определено должным образом.Но только для иллюстрации

enum Test: PropertyIterable {
  static let foo = "blah"
  static let bar = "blah2"
}


let test = Test.allProperties //will return ["foo": "blah", bar: "blah2"]

В настоящее время, когда я печатаю Mirror(describing: Test.self).children, я получаю это:

AnyCollection<(label: Optional<String>, value: Any)>(_box: Swift._RandomAccessCollectionBox<Swift.LazyMapCollection<Swift.Range<Swift.Int>, (label: Swift.Optional<Swift.String>, value: Any)>>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...