PassThroughSubject 是什么
为了管理外部数据,SwiftUI具有一个ObservableObject协议。这要求我们声明一个名为objectWillChange的变量,该变量需要一个Publisher;通常,我们可以使用PassThroughSubject。这就是遵守ObservableObject协议所需的全部。然后,当值更改时,我们需要在发布服务器上使用send方法发送消息。 PassThroughSubject接受两个参数,一个输出和一个失败。
推荐文章
PassthroughSubject 使用教程
我们需要做的第一件事是创建一个实际的传递主题实例。这是超级容易,我们可以使用默认初始化器。
let passthroughObject = PassthroughSubject<String,Error>()
下面是send常用函数
- send(input:String)函数向该subject添加新值。
- send(completion:.finished)发送完成
- send(completion: someError)发送error
下面是例子
passthroughObject.send("Hello")
passthroughObject.send("World")
如果您在使用 send()添加"Hello"和"word",则subscribe订阅者不会收到这两个值。您只会收到订阅主题后发送的值
let passThroughSubject = PassthroughSubject<String, Error>()
passThroughSubject.send("Hello")
passThroughSubject.send("Hello")
let subscription = passThroughSubject.sink(
receiveCompletion: { completion in
print("Received completion (sink)", completion)
},
receiveValue: { value in
print("Received value (sink)", value)
})
现在,我们发送一个值后,我们订阅和打印该值。
let passThroughSubject = PassthroughSubject<String, Error>()
passThroughSubject.send("Hello")
let subscription = passThroughSubject.sink(
receiveCompletion: { completion in
print("Received completion (sink)", completion)
},
receiveValue: { value in
print("Received value (sink)", value)
})
passThroughSubject.send("Hello")
输出
hello
推荐
基础文章推荐
经典教程推荐
- onevcat 大神的《SwiftUI 与 Combine 编程》
- 更新近百篇SwiftUI教程《SwiftUI2020教程》
- 帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方案》
技术源码推荐
推荐文章
CoreData篇
Combine篇
TextField篇
- 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
- 《SwiftUI实战之TextField风格自定义与formatters》
- 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
- 《SwiftUI 当键盘出现时避免TextField被遮挡自动向上移动》
- 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
JSON文件篇
一篇文章系列
- SwiftUI一篇文章全面掌握List(教程和源码)
- 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
- SwiftUI一篇文章全面掌握Picker,解决数据选择(教程和源码)
- SwiftUI一篇文章全面掌握Form(教程和源码)
- SwiftUI Color 颜色一篇文章全解决
技术交流
QQ:3365059189
SwiftUI技术交流QQ群:518696470
- 请关注我的专栏icloudend, SwiftUI教程与源码
https://www.jianshu.com/c/7b3e3b671970