Использование протоколов в качестве типов массивов и параметров функций в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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