SwiftUI 表单验证与 Combine 入门:构建响应式应用
1. 输入验证概述
在输入表单中,输入验证是常见需求。例如,注册表单中的密码字段,需确保用户输入的密码符合特定标准。不过,并非所有应用都强制执行输入验证,像 iOS 联系人应用就完全不进行输入验证。
在示例应用中,ISBN 字段需要输入验证。ISBN(国际标准书号)遵循特定格式,最后一位是校验码。确保用户输入有效的 ISBN 很重要,因为我们要使用 ISBN 查找书籍封面。接下来将分多步添加简单的验证例程:
1. 直接将验证添加到 BookEditView ,这是最简单直接的方法,但可维护性和可扩展性较差。
2. 将验证逻辑提取到视图模型中,虽然看似增加了工作量,但可扩展性更好,便于为更多字段添加验证。
3. 使用 Combine 改进验证逻辑,可将多个验证步骤组合成一个,适用于需同时满足多个条件的表单,如注册表单。
2. 使用 .onChange(of:) 进行验证
可以在任何 SwiftUI 视图上调用 .onChange(of:) 来触发副作用,只要属性发生变化。为观察当前编辑书籍的 ISBN 属性变化,可在 BookEditView 的任何视图中添加 .onChange(of: book.isbn) 。可以选择将其添加到 ISBN TextField 或 Form 本身。在闭包内会接收到新值。
以下是示例代码:
超级会员免费看
订阅专栏 解锁全文
1137

被折叠的 条评论
为什么被折叠?



