在主应用程序包与其包含的框架之间进行通信

时间:2018-12-18 07:33:45

标签: swift xcode

我正在尝试在2个视图控制器之间传递数据。控制器之一驻留在框架中,而另一个则驻留在主应用程序包中。我正在尝试使用协议在两者之间进行通信。我能够将协议从框架导入到主应用程序,但是我面临着信息无法回传的问题。我需要设置2路通讯渠道

1 个答案:

答案 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提供了协议并声明了如何使用它们。