Мой вопрос, если у вас есть Array
объектов, которые соответствуют . Я хочу перебрать массив, вызывающий метод для каждого члена массива. Однако метод, который я хочу назвать, является статическим и использует генерики. Мне нужно получить класс элемента в массиве, чтобы сделать это. как вы получаете класс этого объекта? Является ли это возможным?Получить класс или структуру, которые соответствуют протоколу для использования в функции с использованием Generics
Я пишу библиотеку общих функций в Свифт.
У меня есть протокол, называемый DBAble
, который имеет в качестве функции:
static func get<T: DBable >(id:Int) -> T?
У меня есть массив объектов, которые согласуются с DBAble:
let objs:[DBAble] = []
Я хочу перебрать массив и называют:
for obj in objs {
obj.get(id: anInt)
}
однако я получаю это сообщение:
Статический член «GET» не может быть использован в экземпляре типа «DBable.Protocol»
Есть ли способ найти класс (или тип структуры) объекта, которая соответствует протокол? Я понимаю, что я могу сделать:
if obj is User {
}
однако это не решение, которое я ищу.
Ваше изменение не уточняет, что вы ожидаете 'get (_ :)' для возврата при вызове в цикле for. Вы ожидаете 'T == obj.dynamicType'? – Hamish