Ios 可选类型的值';UITextField&x27;必须展开以引用成员';文本';包装底座类型';UITextField';
我使用一个文本字段来搜索数组中的值。但我遇到了这样的错误。 我们应该如何转换数据类型?我用的是Swift 5 可选类型“UITextField”的值必须展开才能引用已包装基类型“UITextField”的成员“text”Ios 可选类型的值';UITextField&x27;必须展开以引用成员';文本';包装底座类型';UITextField';,ios,swift,Ios,Swift,我使用一个文本字段来搜索数组中的值。但我遇到了这样的错误。 我们应该如何转换数据类型?我用的是Swift 5 可选类型“UITextField”的值必须展开才能引用已包装基类型“UITextField”的成员“text” for i in 0..<allUser.count { if allUser[i].name.contains(textArea.text) { // here is the error print(allUser[i].
for i in 0..<allUser.count {
if allUser[i].name.contains(textArea.text) { // here is the error
print(allUser[i].name)
}
}
对于0中的i..您应该使用if let
语句安全地打开文本
for i in 0..<allUser.count{
if let textValue = textArea.text {
if allUser[i].name.contains(textValue){
print(allUser[i].name)
}
}
}
对于0中的i..您得到的错误是因为textArea是可选的,textArea.text返回可选字符串,“contains”函数需要非可选字符串
首先,展开文本,然后循环过滤匹配项并打印它们
if let text = textArea?.text {
for user in allUser.filter({ $0.name.contains(text) }) {
print(user.name)
}
}
错误与文本字段有关,而与文本属性无关
你甚至可以写
if let textField = textArea {
let text = textField.text!
for user in allUser where user.name.contains(text) {
print(user.name)
}
}
因为UITextField
的text
属性不会是nil
,但是在这种情况下这是最好的
if let text = textArea?.text {
for user in allUser where user.name.contains(text) {
print(user.name)
}
}
我建议您在循环if let text=textArea?.text{
之前打开对象,并在if
语句中使用text
。