Использование протоколов в качестве типов массивов и параметров функций в SwiftIOS

Программируем под IOS
Anonymous
Использование протоколов в качестве типов массивов и параметров функций в Swift

Сообщение Anonymous »

Я хочу создать класс, который сможет хранить объекты, соответствующие определенному протоколу. Объекты должны храниться в типизированном массиве. Согласно документации Swift, протоколы можно использовать как типы: 

Поскольку это тип, вы можете использовать протокол во многих местах, где разрешены другие типы, в том числе:
  • Как тип параметра или тип возвращаемого значения в функции, методе или инициализаторе
  • Как тип константа, переменная или свойство
  • Как тип элементов в массиве, словаре или другом контейнере
Однако следующее приводит к ошибкам компилятора:

Протокол SomeProtocol можно использовать только как общее ограничение, поскольку он имеет Self или связанные с ними требования к типу

Как вы собираетесь это решить:
protocol SomeProtocol: Equatable {
func bla()
}

class SomeClass {

var protocols = [SomeProtocol]()

func addElement(element: SomeProtocol) {
self.protocols.append(element)
}

func removeElement(element: SomeProtocol) {
if let index = find(self.protocols, element) {
self.protocols.removeAtIndex(index)
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/248 ... s-in-swift

Вернуться в «IOS»