Приведите протокол к другому протоколу Swift - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь работать с протоколами через стручки.Затем я упростил задачу здесь, чтобы я мог задать вопрос о StackOverflow.

В моей задаче TestClass ничего не знает о SecondProtocol (как в отдельном модуле).

public protocol FirstProtocol {
    func get(data: String) -> String
}

public protocol SecondProtocol {
    func get(data: String) -> String
}

class TestClass {
    func get(data: String) -> String {
        return "Rest data"
    }

    public init() { }
}

extension TestClass : FirstProtocol {}

let myTest : FirstProtocol?

myTest = TestClass() as FirstProtocol

let secondTest: SecondProtocol?

secondTest = myTest as! SecondProtocol

Таким образом, последняя строка вызывает сбой в Swift.В каком-то смысле я понимаю почему.Однако secondTest создается из основной программы, а не Pod secondTest, поэтому SecondTest ничего не знает о SecondProtocol.Тем не менее, второй модуль ожидает ввода Второго протокола.

Так как я могу получить secondTest для приведения к SecondProtocol?

1 Ответ

3 голосов
/ 31 мая 2019

Все, что вам не хватает, это заставить TestClass соответствовать SecondProtocol, как вы это сделали для FirstProtocol:

extension TestClass : SecondProtocol {}

Вы можете указать соответствия протоколов для классов, структур и перечислений, которые определены в других модулях, таких как Foundation или UIKit, а также в зависимостях сторонних производителей.

...