使用RXSwift的SwiftUI表单验证



我正在使用SwiftUI构建一个本地IOS应用程序。在用户点击按钮之前,我应该使用RXSwift来实时验证表单的一些字段。特别是,我需要对文本字段、日期字段、数字字段和电子邮件字段进行验证检查。

如果这个问题有点笼统,请原谅,但我是应用程序的初学者。

有人能解释一下我如何使用SwiftUI和RXSwift进行验证吗?如果你有任何例子,那就太完美了。

提前感谢你的好意!

好吧,我要说的是,在学习SwiftUI时,你可能不应该使用Libraries,尤其是RxSwift。学习应用程序开发应该从坚实的基础上学习,而不是从预先构建的代码块中学习。当你掌握这项技能时,理解概念和基本原理将对你有很大帮助。话虽如此,我的观点是RxSwift只不过是一根拐杖,SwiftUI已经拥有了你所需要的一切,并以一种简单的方式做到了这一点。

关于你的实际问题,我假设你根本不知道如何在SwiftUI中进行验证,所以我会尽我所能回答这个问题,并在过程中进行解释。

查看示例

struct TestView: View {
@ObservedObject var testModel = TestModel()

var body: some View {
VStack(alignment: .center) {

Text(testModel.isTextFieldValid() ? "Valid" : "Not Valid")

TextField("Some Text", text: $testModel.textFieldText)
}
}
}

在我们的View Example上有一些关键的事情需要注意,首先,注意对象是我们在下面创建的ViewModel@ObservedObject。这就是我们将所有数据与视图联系起来的方式。这也是我们Bind数据的方式。就像RxSwift一样,如果我们更改视图,我们的模型也会更新,如果我们改变模型,我们的视图也会更新。在这个View Example中,我有一个绑定到函数.isTextFieldValid()的文本字段,这就是我检查文本是否有效的方式。现在,您可以进入各种不同的验证技术,但这都是用例。您可能只是在验证空字符、特定字符、长度或您可能要查找的任何数量的条件。我有一个字段,它也与视图模型的textFieldText属性绑定,该方法将对其进行检查。

视图模型示例

class TestModel: ObservableObject {
@Published var textFieldText = "Hello"

func isTextFieldValid() -> Bool {
textFieldText.count > 0
}
}

在视图模型(@ObservableObject(中,我有一个@Published属性textFieldText。视图的Text()在其第二个参数中绑定到该值,例如text: $testModel.textFieldText,其中输入的任何文本都将发送到模型上的该属性。这就是它变得有趣的地方。无论何时更新@State@ObservedObject,都会重新绘制整个视图。这就是为什么这里的函数isTextFieldValid()不需要是@Published,因为textFieldText被更新,视图被重新绘制,并且这个方法被再次调用。因此,它将进行检查。在我的示例中,我只是验证文本字段是否包含超过0个字符。使用相同的原理,您可以很容易地看到RxSwift与SwiftUI的原生工具相比没有任何优势。如果你构建这个简单的例子,你会看到";Live Validation";在文本字段中键入时所期望的。

相关内容

  • 没有找到相关文章

最新更新