首页 > 解决方案 > 在主应用程序包和它包含的框架之间进行通信

问题描述

我正在尝试在 2 个视图控制器之间传递数据。其中一个控制器位于框架中,另一个位于主应用程序包中。我正在尝试使用协议在两者之间进行通信。我能够将协议从框架导入到主应用程序,但我面临的问题是信息没有得到回传。我需要设置一个双向通信通道

标签: swiftxcode

解决方案


您需要为要来回通信的信息定义协议。

假设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提供协议并声明如何使用它。


推荐阅读