Я пытаюсь написать реестр в Swift, который отображает от API (протоколов) к реализациям (классам). Я хотел бы предоставить реестр API и получить экземпляр класса, который его реализует. В Objective-C это было довольно тривиально - просто вызовите NSStringFromProtocol по протоколу, а затем используйте это как ключ для словаря, содержащего классы, которые их реализуют. Однако в Swift у нас нет этой интроспективной возможности. Когда я пытаюсь сделать то же самое, мне сказали, что MyAPI.protocol не имеет члена «mirrorType». Мой вопрос к вам заключается в том, как в Swift без использования протоколов @objc я могу сопоставить сам протокол с классом, который его реализует. Благодаря!Возможно ли хешировать протокол Swift?
0
A
ответ
1
К настоящему времени это невозможно без использования @objc. Решение, которое я нашел в этом случае, использует имя протокола (string) в качестве ключа для словаря для этих реализаций (в моем случае у меня всегда будет только один экземпляр для протокола).
Использование @objc заставит вас иметь все ваши реализации, возвращая AnyObject эквивалент (id) в объекте-C (если ваша функция не возвращает родной объект-тип C).
Надеюсь, что это поможет.
Смежные вопросы
- 1. Возможно ли продлить протокол?
- 2. Возможно ли удовлетворить протокол Swift и добавить аргументы по умолчанию?
- 3. Можно ли хешировать AuthPassword?
- 4. Нельзя ли запретить хешировать пароли?
- 5. Возможно ли разработать протокол ssh в rebol?
- 6. Могу ли я форсировать протокол в Swift?
- 7. Swift наследования протокол
- 8. Swift неявный протокол
- 9. Возможно ли построить встроенные дженерики в Swift?
- 10. Swift протокол требуют свойств, как протокол
- 11. Как протокол Swift соответствует типу протокол параметра
- 12. Протокол Swift не работает
- 13. Протокол downcasting в Swift
- 14. Swift conformace протокол
- 15. Возможно ли KVC с Swift?
- 16. Протокол Swift похож на Equatable
- 17. PHP - Можно ли хешировать массив чисел?
- 18. Стоит ли хешировать пароли на стороне клиента
- 19. расширение Swift протокол, уведомляет наблюдатель
- 20. Протокол Swift для подклассов UIViewController
- 21. Протокол Swift с общими типами
- 22. Как правильно хешировать строку
- 23. Лучше хешировать, чем SHA1
- 24. Возможно ли иметь протокол Swift, который использует статический метод, а не метод класса или наоборот?
- 25. Как продлить протокол в Swift
- 26. Протокол и делегирование в Swift
- 27. Протокол Swift для общей функциональности
- 28. Swift производительность и протокол CustomStringConvertible
- 29. Протокол делегата Swift не запущен
- 30. Swift: массив реализующих протокол структур
Это 'toString (YourProtocol.self)' что вы ищете? –
Ха вводил это (или скорее «String (SomeProtocol.self)», если вы в 2.0). Однако я бы также предложил не делать этого вообще, это решение в поисках проблемы. –
@AirspeedVelocity, спасибо за подсказку. Что вы подразумеваете под решением в поисках проблемы? Можете ли вы уточнить? Как еще вы могли бы реализовать этот шаблон дизайна? – AttilaTheFun