ios - 使用自定义字段 Swift 从数组中搜索
问题描述
我有一个数组
var searchArray = [(
ean: String,
name: String,
weight: String,
brand: String,
percent: String,
inside: String,
img: String,
packet: String,
date: String)
]()
var searchArrayFiltered = [(
ean: String,
name: String,
weight: String,
brand: String,
percent: String,
inside: String,
img: String,
packet: String,
date: String)
]()
我有一个从数组中搜索并在表中显示结果的代码:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchArrayFiltered = searchText.isEmpty ? searchArray : searchArray.filter({(dataString: String) -> Bool in
return dataString.(of: searchText, options: .caseInsensitive) != nil
})
tableView.reloadData()
}
但是在线return dataString.String(of: searchText, options: .caseInsensitive) != nil
我有一个错误:
元组类型'(ean:String,name:String,weight:String,brand:String,percent:String,inside:String,img:String,packet:String,date:String)'的值没有成员'String'
如果我将 dataString.String 更改为 dataString.name,则会出现错误:
无法调用非函数类型“字符串”的值
请帮我搜索searchArray
" name"。
解决方案
首先,不鼓励您使用元组作为数组类型。使用自定义结构或类
苹果 说:
元组对于相关值的临时组很有用。它们不适合创建复杂的数据结构。如果您的数据结构可能在临时范围之外持续存在,请将其建模为类或结构,而不是元组。
有两个主要问题:
- 复制粘贴错误,你的意思是
dataString.range(of...
dataString
不是字符串,是元组(类型注释是多余的)
将函数更改为
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchArrayFiltered = searchText.isEmpty ? searchArray : searchArray.filter({tuple -> Bool in
return tuple.name.range(of: searchText, options: .caseInsensitive) != nil
})
tableView.reloadData()
}
推荐阅读
- authentication - 如何将用户和密码身份验证发送到 OSB 12c 中的旧版?
- javascript - 如何在 React 中实现路由?
- shopify - 如何根据特定条件重复部分迭代?
- azure - 如何将 SOAP 请求的 DateTime 传递给 azure web api?
- python - 为什么 Python 列表没有范围限制(而整数有)?
- javascript - Office 365 Outlook REST API - Office.context.mailbox.displayMessageForm 无法在 Mac Outlook 和 UI 较少的加载项上运行
- javascript - 如何使用列表项创建动态菜单?
- javascript - 阻止 div 的 childNodes 响应 div 的事件监听器
- vue.js - 值更改时如何更新 Dom(重新渲染元素)?
- xpath - 使用浏览器控制台复制与 XPath 匹配的所有节点的值?