我正在尝试在2个视图控制器之间传递数据。控制器之一驻留在框架中,而另一个则驻留在主应用程序包中。我正在尝试使用协议在两者之间进行通信。我能够将协议从框架导入到主应用程序,但是我面临着信息无法回传的问题。我需要设置2路通讯渠道
答案 0 :(得分:0)
您需要为要来回传递的信息定义协议。
在SampleFramework
中假设您有
public protocol Information {
var string: String { get }
}
public protocol Communicator {
func provide(info: Information)
func consume(info: Information)
}
public class MediaCompany {
public var communicators: [Communicator] = []
public func present(info: Information) {
communicators.forEach { $0.provide(info: info) }
}
}
因此,在您的主要应用目标中,您可以
import SampleFramework
struct Song: Information {
var string: String { return "Merry Christmas" }
}
public class Singer: Communicator {
func provide(info: Information) { print(info.string) }
func consume(info: Information) { print(info.string) }
}
let aBigMediaCompany = MediaCompany()
aBigMediaCompany.communicators.append(Singer())
aBigMediaCompany.present(Song())
因此它将打印
Merry Christmas
您可以在代码中看到,SampleFramework
提供了协议并声明了如何使用它们。