SwiftUI 组合搜索文本

SwiftUI combine search text

我有后端 API /search?q=New Je 这是 return JSON 个城市的列表

我有一个class

final class LocationStore: ObservableObject{
     @Published var List : [LocationModel] = []
     func search(q: String) {
         call backend search API and assign to List
     }

}

并且我在视图中搜索了 TextField。

如何在用户输入搜索文本字段时调用搜索 api 并分配到我的列表。需要在 TextField 中键入 3 字符后显示下拉菜单

你如何处理这样的事情的松散结构:

  • 设置一个您可以以某种方式观察输出的文本字段。
  • 如果您想使用 Combine,请创建一个管道,在每次更改时发送该字段的值,然后在符合您的规范(>3 个字符)时触发一些输出
  • 当组合管道触发时,使用提供的值或仅使用触发器的性质来执行您想要的任何操作。

Using Combine in the pattern named Declarative UI updates from user input. It covers a bit more. The github project that hosts 中在线提供了几乎完全可以执行此操作的示例代码,如果您希望使用 SwiftUI 查看它,则在项目中使用 Combine 也有此的 SwiftUI 变体。