2015-11-16 3 views
1

Предполагая, что некоторыеКак я могу вызвать NSStringFromProtocol с помощью протокола Swift?

protocol MyCoolProtocol { 
    .... 
} 

следующий код отказывается компилировать (как Свифта 2.1):

let protocolName = NSStringFromProtocol(MyCoolProtocol) 

потому MyCoolProtocol не типа Protocol. (Это, на первый взгляд, кажется действительно странным, но если вы достаточно копаете, это [к сожалению] имеет смысл)

Как я могу получить имя моего Swift protocol в String?

ответ

2

Есть два способа:

  1. Наиболее распространенное предложение, которое я могу найти, чтобы объявить protocol в @objc. Это кажется странным, если вы не намерены ссылаться на этот код protocol из кода Objective-C.

  2. Вы можете использовать let protocolName = String(MyCoolProtocol). Начиная с текущей версии Swift, это дает то, что вы ожидаете ("MyCoolProtocol"), и по-прежнему проверяется во время компиляции.