Проверка шаблона шины для iOS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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