Вопросы с тегом «swift-protocols»

Протоколы, специфичные для языка Swift

6
Как сделать слабую ссылку на протокол в «чистом» Swift (без @objc)
weak ссылки не работают в Swift, если только protocol не объявлено как @objc, чего я не хочу в чистом приложении Swift. Этот код выдает ошибку компиляции ( weakне может быть применен к не классу MyClassDelegate): class MyClass { weak var delegate: MyClassDelegate? } protocol MyClassDelegate { } Мне нужно префикс …


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


2
Что означает «Протокол… может использоваться только как общее ограничение, потому что он имеет требования типа Self или связанные с ним»?
Я пытаюсь создать словарь (на самом деле HashSet ) с ключом для настраиваемого протокола в Swift, но он дает мне ошибку в заголовке: Протокол myProtocol может использоваться только в качестве общего ограничения, поскольку он имеет требования типа Self или связанные с ним. и я не могу понять это. protocol Observing: …

3
Метод не - '@ objc' не удовлетворяет необязательному требованию протокола '@objc'
Обзор: У меня есть протокол P1, который обеспечивает реализацию по умолчанию одной из дополнительных функций Objective-C. Когда я предоставляю реализацию дополнительной функции по умолчанию, появляется предупреждение Предупреждение компилятора: Non-'@objc' method 'presentationController(_:viewControllerForAdaptivePresentationStyle:)' does not satisfy optional requirement of '@objc' protocol 'UIAdaptivePresentationControllerDelegate' Версия: Swift: 3 Xcode: 8 (публичный выпуск) Были предприняты попытки: …

5
Протокол может использоваться только как общее ограничение, потому что он имеет требования Self или associatedType.
У меня есть протокол RequestType, и у него есть модель AssociatedType, как показано ниже. public protocol RequestType: class { associatedtype Model var path: String { get set } } public extension RequestType { public func executeRequest(completionHandler: Result<Model, NSError> -> Void) { request.response(rootKeyPath: rootKeyPath) { [weak self] (response: Response<Model, NSError>) -> …

15
Как заставить перечисление соответствовать протоколу в Swift?
В документации Swift говорится, что классы , структуры и перечисления могут соответствовать протоколам, и я могу добраться до точки, где все они соответствуют. Но я не могу заставить перечисление вести себя так же, как примеры классов и структур : protocol ExampleProtocol { var simpleDescription: String { get set } mutating …

5
Как в Swift объявить переменную определенного типа, которая соответствует одному или нескольким протоколам?
В Swift я могу явно указать тип переменной, объявив ее следующим образом: var object: TYPE_NAME Если мы хотим пойти дальше и объявить переменную, которая соответствует нескольким протоколам, мы можем использовать protocolдекларативную: var object: protocol<ProtocolOne,ProtocolTwo>//etc Что, если я хочу объявить объект, который соответствует одному или нескольким протоколам, а также относится к …

4
«Фатальная ошибка: нельзя соединить массив с Objective-C» - зачем вы вообще пытаетесь, Swift?
Я объявил протокол Swift: protocol Option { var name: String { get } } Я объявляю несколько реализаций этого протокола - некоторые классы, некоторые перечисления. У меня есть контроллер представления со свойством, объявленным так: var options: [Option] = [] Когда я пытаюсь установить это свойство для массива объектов, реализующих Optionпротокол …

6
Swift - метод класса, который должен быть переопределен подклассом
Есть ли в Swift стандартный способ сделать "чистую виртуальную функцию", т.е. тот, который должен быть переопределен каждым подклассом, и который, если это не так, вызывает ошибку времени компиляции?

9
Функция протокола возвращает Self
У меня есть протокол P, который возвращает копию объекта: protocol P { func copy() -> Self } и класс C, реализующий P: class C : P { func copy() -> Self { return C() } } Однако, если я помещаю возвращаемое значение, Selfя получаю следующую ошибку: Невозможно преобразовать возвращаемое выражение …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.