swift - 在主应用程序包和它包含的框架之间进行通信
问题描述
我正在尝试在 2 个视图控制器之间传递数据。其中一个控制器位于框架中,另一个位于主应用程序包中。我正在尝试使用协议在两者之间进行通信。我能够将协议从框架导入到主应用程序,但我面临的问题是信息没有得到回传。我需要设置一个双向通信通道
解决方案
您需要为要来回通信的信息定义协议。
假设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
提供协议并声明如何使用它。
推荐阅读
- c++ - 在循环条件下处理 size_t 下溢的成语
- gremlin - 有没有办法在 asyncio Python 应用程序中使用 Gremlin?
- user-interface - 如何在代号1的UI界面下面设计这个
- database - 将服装数据库与 WP 数据库合并
- batch-file - 在目录中搜索文件列表时无法将值动态存储在批处理文件中
- javascript - 如何根据用户选择在 ASP.NET Core MVC 的不同下拉菜单中填充下拉菜单?
- react-native - 如何在 jhipster 中自定义 react-navigation 而不是 react-native-navigation?
- r - 在 R 中调整 plotmo::plot_glmnet 的顶轴标题和标签图
- python - 如何修复 ValueError:字典更新序列元素 #0 的长度为 1;需要 2 odoo 12?
- pointers - 为什么指向 int 的指针用“*int”而不是“&int”初始化?