Publishers 和Combine是什么关系
Combines是由以下几个方面内容组成:
- Publisher 发布者
- subscripbes 订阅者
- operate 处理者
推荐文章
Publisher 入门小demo
我们常用的Array,String和Dictionary都可以转化为Publisher.
let helloPublisher = "Hello Combine".publisher
let fibonacciPublisher = [0,1,1,2,3,5].publisher
let dictPublisher = [1:"Hello",2:"World"].publisher
您的subscribe订阅者可以通过sink响应publisher发布的消息
let fibonacciPublisher = [0,1,1,2,3,5].publisher
_ = fibonacciPublisher.sink { value in
print(value)
}
输出结果
0 1 1 2 3 5
捕获完成与失败
您的subscribe订阅者可以通过sink函数响应调用,block区域将会收到publisher发出的values
publisher可以发射零个活多个values,除了基本值之外,您的publisher还会发给订阅者特殊值。
- 如果订阅完成,将发出.finished
- 如果出现问题,将发出.failure(_)
失败返回值可以是自定义对象,一个Error对象或者Nevver对象。
let fibonacciPublisher = [0,1,1,2,3,5].publisher
_ = fibonacciPublisher.sink(receiveCompletion: { completion in
switch completion {
case .finished:
print("finished")
case .failure(let never):
print(never)
}
}, receiveValue: { value in
print(value)
})
输出
0 1 1 2 3 5
finished
如何取消订阅
如果要取消订阅,可以通过调用取消订阅来执行此操作。
let subscriber = fibonacciPublisher.sink { value in
print(value)
}
subscriber.cancel()
推荐
基础文章推荐
经典教程推荐
- onevcat 大神的《SwiftUI 与 Combine 编程》
- 更新近百篇SwiftUI教程《SwiftUI2020教程》
- 帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方案》
技术源码推荐
推荐文章
CoreData篇
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