aba*_*arg 3 xcode uikit ios swift combine
由于某种原因,当我在搜索字段中输入时,它不会打印出 Xcode 控制台“str”。我在这里缺少什么?我按照他的教程https://www.letsbuildthatapp.com/course_video?id=5232
import UIKit
class SearchViewController: UIViewController {
let searchController = UISearchController(searchResultsController: nil)
var sink: Any?
override func viewDidLoad() {
super.viewDidLoad()
setupSearchBarListener()
navigationItem.searchController = searchController
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Contact"
searchController.obscuresBackgroundDuringPresentation = false
view.backgroundColor = .white
}
fileprivate func setupSearchBarListener() {
let publisher = NotificationCenter.default.publisher(for: UISearchTextField.textDidChangeNotification, object: searchController.searchBar.searchTextField)
publisher
.map {
($0.object as! UISearchTextField).text
}
.debounce(for: .milliseconds(500), scheduler: RunLoop.main)
.sink { (str) in
print(str ?? "")
}
}
}
Run Code Online (Sandbox Code Playgroud)
您正在使用该.sink方法创建一个 Sink 对象,但没有将其存储在任何地方。因此它会立即消失,并且没有可发布的管道。
这里正确的过程是输入一个实例属性Set<AnyCancellable>,并调用store(in:)您的接收器将其存储在该实例属性中。现在它会持续存在并且会有一些东西可以打印出来。
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |