SwiftUI 组合搜索文本
SwiftUI combine search text
我有后端 API /search?q=New Je 这是 return JSON 个城市的列表
- "city": "New Jersey"
- "city": "New Jenny Lind"
- "city": "New Jerusalem"
- ...
我有一个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 变体。
我有后端 API /search?q=New Je 这是 return JSON 个城市的列表
- "city": "New Jersey"
- "city": "New Jenny Lind"
- "city": "New Jerusalem"
- ...
我有一个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 变体。