Проверка шаблона шины для iOS
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

31 lines
676B

  1. extension Bus {
  2. /// Пропускаем далее предоставленные ключи.
  3. static func convertKeyValue<T>(
  4. _ keys: Set<String>,
  5. _ v: (key: String, value: Any)
  6. ) -> (String, T)? {
  7. guard
  8. keys.contains(v.key),
  9. let value = v.value as? T
  10. else {
  11. return nil
  12. }
  13. return (v.key, value)
  14. }
  15. /// Обрабатываем.
  16. static func processKeysValue<Src, Dst>(
  17. _ v: (key: String, value: Any),
  18. _ keysIn: Set<String>,
  19. _ handler: @escaping ((Src) -> Dst?)
  20. ) -> Dst? {
  21. guard
  22. keysIn.contains(v.key),
  23. let vIn = v.value as? Src
  24. else {
  25. return nil
  26. }
  27. return handler(vIn)
  28. }
  29. }