swift - 在 Swift 中,如何在由结构对象数组组成的字典中进行搜索?
问题描述
我有一个结构:
struct AlimentObject {
var id = UUID().uuidString
var nomAliment = "Nouvel aliment"
var poids : Float = 100
var calories : Float = 0
}
以及由 AlimentObjet 组成的数组:
var filteredData: [AlimentObject]!
我有一个表格视图的搜索栏,但我不知道如何搜索“nomAliment”中的字符这里是 searchBar 的代码:
extension AjoutAlimentController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
filteredData = []
for aliment in data {
if aliment.nomAliment.lowercased().contains(searchText.lowercased) {
filteredData.append(aliment)
}
}
self.tableView.reloadData()
}
}
错误说:类型'()-> String'不能符合'StringProtocol';只有结构/枚举/类类型可以符合它在行中的协议:
if aliment.nomAliment.lowercased().contains(searchText.lowercased) {
解决方案
您在()
第二个 之后丢失了lowercased
,因此不是执行lowercased
函数并将返回的字符串传递给contains()
,而是传入一个类型为“()->字符串”的函数。
简单地说,解决方案是:
if aliment.nomAliment.lowercased().contains(searchText.lowercased()) {
推荐阅读
- php - Prestashop 1.6 加密密码无法重现nodejs中的加密
- android - RXKotlin 中断 doOnNext 并调用另一个函数
- css - React 过渡组滚动聊天
- tensorflow - 如何在对象检测 API Tensorflow 中只检测人类
- git - 在 nodejs 中引用密钥文件的最佳方法
- typescript - 打字稿无法解析类型
- javascript - 我正在尝试在 C++ 上移植 1D perlin 噪声教程
- dart - Flutter - 在使用手势检测器的图像旁边添加文本
- python - 以系统用户身份运行 nmap 时子进程访问被拒绝错误
- azure - Azure 数据工厂中的变量和参数?