我无法弄清楚什么是错的以下内容:这个Swift语法有什么问题?
fileprivate func showInlineErrorMessage(_ message: String, forField textField: UITextField) {
// Show error message
errorLabel.text = message
errorLabel.isHidden = false
// Highlight field on which the error is
[usernameTextField, passwordTextField, birthYearTextField, genderTextField].forEach {
updateHighlightOnTextField($0!, highlight: $0 === textField)
}
}
的特定部分是$0 === textField
编译器显示以下错误:
"?" must be followed by a call, member lookup, or a subscript
这是旧代码,所以最近似乎有些事情可能发生了变化。
被调用的功能
fileprivate func updateHighlightOnTextField(_ textField: UITextField, highlight: Bool) {
let highlightView = textField.superview!
highlightView.layer.borderWidth = highlight ? 1.0 : 0.0
highlightView.layer.borderColor = highlight ? DefaultTheme.lineColorError.cgColor : nil
}
'updateHighlightOnTextField'方法的签名是什么?为什么你强制展开'$ 0'作为第一个参数?是否有一个或多个文本字段是可选的?如果第一个参数是force-unwrapped,为什么不是第二个? – rmaddy
我刚刚更新了上面的问题与其他信息。 –