swift - 遍历项目并等到所有项目都被检查成功之前 Swift
问题描述
我有一个 forLoop 循环遍历 textField 数组中的项目并检查字段是否全部填充,否则返回。我遇到的问题是默认情况下,数组中的 4 个项目中的 3 个是预先填充的,所以在第一个实例中,第一个项目是未填充的项目并且函数中断但是一旦我将第二个项目中的项目也设为空并填充第一个,true
在重新运行检查之前它首先会很有趣,这就是false
失败检查的方式。true
在审查所有项目之前,如何防止关闭被调用。
private func formArrayValidation(completion: @escaping (Bool, [String: Any]?) -> Void) {
guard self.pageThree.formArray.count > 0 else {
return
}
for form in self.pageThree.formArray {
guard form.textField.text != "" else {
SPAlert.present(message: "\(form.dynamicModel?.name ?? "") is required", haptic: .error)
completion(false, nil)
break
}
guard Regex.validateDynamicForm(form.textField.text ?? "", pattern: form.dynamicModel?.pattern ?? "") else {
SPAlert.present(message: "\(form.textField.text ?? "") does not match our pattern", haptic: .error)
completion(false, nil)
break
}
guard let key = form.dynamicModel?.key, let value = form.textField.text else { return }
inputParameter[key] = value
self.applicationParameter["inputs"] = inputParameter
completion(true, applicationParameter)
}
}
解决方案
您必须在循环之后调用该completion(true)
行,因为所有表单都必须通过测试。
并替换break
为return
立即返回
private func formArrayValidation(completion: @escaping (Bool, [String: Any]?) -> Void) {
guard !self.pageThree.formArray.isEmpty else {
return
}
for form in self.pageThree.formArray {
guard !form.textField.text.isEmpty else {
SPAlert.present(message: "\(form.dynamicModel?.name ?? "") is required", haptic: .error)
completion(false, nil)
return
}
guard Regex.validateDynamicForm(form.textField.text ?? "", pattern: form.dynamicModel?.pattern ?? "") else {
SPAlert.present(message: "\(form.textField.text ?? "") does not match our pattern", haptic: .error)
completion(false, nil)
return
}
guard let key = form.dynamicModel?.key, let value = form.textField.text else { return }
inputParameter[key] = value
self.applicationParameter["inputs"] = inputParameter
}
completion(true, applicationParameter)
}
注意:检查集合类型和字符串是否始终为空,isEmpty
而不是count > 0
或!= ""
推荐阅读
- macos - 尝试使用 Ballerina 扩展 - 错误:由于安全性和可用性问题,不推荐使用 DeprecateWarning:Buffer() -
- sql - 基于列匹配的增量计数器(postgres)
- r - shinydashboardPlus:打开一个封闭的盒子Plus
- c - c中输入数字的总和
- scala - Spark Json 迭代
- android - React Native geolcation 卫星数量
- r - ggplot() 和 geom_smooth() 的问题
- vb.net - 由于阴影,Me 关键字无法在派生类中执行子例程
- javascript - 如何以格式(YYYY-MM-DD)获取时刻格式日期选择器的值
- ios - 如何在 swift 5.1 中设置 UICollectionView 的标题大小?