Open DianQK opened 7 years ago
invokeMethod
和 sendMessage
的区别sentMessage
和 methodInvoked
只有一个区别,sentMessage
会在调用方法前发送值, methodInvoked
会在调用方法后发送值。
示例代码如下:
override func viewDidLoad() {
super.viewDidLoad()
rx.sentMessage(#selector(ViewController.viewWillAppear(_:)))
.subscribe(onNext: { value in
print("1")
})
.addDisposableTo(disposeBag)
rx.methodInvoked(#selector(ViewController.viewWillAppear(_:)))
.subscribe(onNext: { value in
print("3")
})
.addDisposableTo(disposeBag)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("2")
}
输出结果为:
1
2
3
不知道为何 😑 Markdown 的渲染在文章中会出问题,示例代码就写到评论了。
正好测试一下 Gitment
我好想发现了了不得的东西
hi,DianQK , 我有一个问题,麻烦帮忙看一下,谢谢。
var allCites: Variable<[CiteModel?]> = Variable([])
var searchQuery: Variable<String> = Variable("")
let model1 = CiteModel()
model1.cite = "131"
let model2 = CiteModel()
model2.cite = "331"
let model3 = CiteModel()
model3.cite = "121"
allCites.value = [model1,model2,model3]
var shownCites: Observable<[CiteModel?]> = Observable.combineLatest(allCites.asObservable(), searchQuery.asObservable()) {
allCites, query in
return allCites.map { cites in cites.filter { $0.cite.contains(query) } }
}
func filterCitesByQuery(query: String) {
searchQuery.value = query
}
上面代码出现了编译报错。
Hi,@summerHearts
你的这个 shownCites
中的代码类型基本都是混的,cites
类型是 CiteModel?
,没有对应的 filter
方法。
从上面代码看,你似乎是要做一个搜索过滤,下面代码应该能满足你的要求:
var allCites: Variable<[CiteModel]> = Variable([])
var searchQuery: Variable<String> = Variable("")
let model1 = CiteModel()
model1.cite = "131"
let model2 = CiteModel()
model2.cite = "331"
let model3 = CiteModel()
model3.cite = "121"
allCites.value = [model1, model2, model3]
var shownCites: Observable<[CiteModel]> = Observable.combineLatest(allCites.asObservable(), searchQuery.asObservable()) { allCites, query in
allCites.filter { $0.cite.contains(query) }
}
func filterCitesByQuery(query: String) {
searchQuery.value = query
}
thanks,谢谢能抽出时间帮忙!向您学习
发自网易邮箱大师 在2017年08月04日 20:11,DianQK 写道:
Hi,@summerHearts
你的这个 shownCites 中的代码类型基本都是混的,cites 类型是 CiteModel? ,没有对应的 filter 方法。
从上面代码看,你似乎是要做一个搜索过滤,下面代码应该能满足你的要求:
var allCites: Variable<[CiteModel]>=Variable([])
var searchQuery: Variable
let model1 =CiteModel() model1.cite="131"let model2 =CiteModel() model2.cite="331"let model3 =CiteModel() model3.cite="121"
allCites.value= [model1, model2, model3]
var shownCites: Observable<[CiteModel]>= Observable.combineLatest(allCites.asObservable(), searchQuery.asObservable()) { allCites, query in allCites.filter { $0.cite.contains(query) } }
funcfilterCitesByQuery(query: String) { searchQuery.value= query }
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
https://blog.dianqk.org/2017/04/03/rxswift-answer/