在表格视图控制器iOS swift中搜索特定记录

Posted

技术标签:

【中文标题】在表格视图控制器iOS swift中搜索特定记录【英文标题】:search a particular record in table view controller iOS swift 【发布时间】:2017-10-15 19:29:42 【问题描述】:

我正在使用 jsonserialization 方法从 url 获取数据,并将每条记录存储在类的对象中,并在表 vc 中显示每条记录。

现在我想使用搜索栏实现搜索,并观看许多在字符串类型数组和另一个字符串类型数组(数组中的硬编码值)之间进行比较的教程。 但根据我的需要,我的数据存储在类 obj 中,而不是硬编码数据,并且来自该对象的数据显示在 cellforrow 上。 cellforrow 包含。

if isSearching 

    cell.textLabel?.text = searchArray[indexPath.row] //.compName

    cell.detailTextLabel?.text = searchArray[indexPath.row]

else 
    cell.textLabel?.text = tempArray[indexPath.row].compName

    cell.detailTextLabel?.text = tempArray[indexPath.row].complocation

return cell

那么如何实现搜索栏,出现以下错误。 请帮忙! 这里我的类名是-> comp。 并且 searchArray 是字符串数组和 tempArray 是包含类 obj 的数组

Image of the error

【问题讨论】:

你必须让我们知道你的类型comp是什么......?所以添加类定义或comp 你好@Ladislav comp 是我的班级名称..class comp var compName : String! 【参考方案1】:

找到了。就是这样 以下是else条件的变化

searchArr   = tempArray.filter  $0.<classAttribute>.contains(searchText) 

searchArray = searchArr as! [comp]

print("search match")

listTableView.reloadData()

这里 searchArr 和 searchArray 和 tempArray 是类类型的数组,& classAttribute 是你要在tableview中搜索的那个类的属性,我的类名是“comp”

【讨论】:

【参考方案2】:

那么你只需要修改你使用的搜索过滤器:

searchArray = tempArray.filter($0.compName == searchBarClicked.text!)

编译器告诉您,您无法将 comp 类型的 $0searchBarClicked.text 类型的 String 进行比较,因此 $0.compName 将是 String,因此可以使用 ==

【讨论】:

我已经尝试过了,但是在.filter上生成了其他错误,说->无法将类型'[comp]'的值分配给类型'[String]'... 请将您的comp 类添加到您的问题和tempArray 中的数据示例【参考方案3】:

使用这个:

searchArray = searchArray.filter(($0["name"]?.localizedCaseInsensitiveContains(textField.text!)))!

【讨论】:

以上是关于在表格视图控制器iOS swift中搜索特定记录的主要内容,如果未能解决你的问题,请参考以下文章

在一个用 JSON 填充的 NSArray 中搜索特定的标题

如何在 DataTable 中搜索特定记录?

在java中搜索特定记录的数组列表

如何在子表单中搜索特定值以返回 VBA 结果

NEDB & Nodejs:使用用户输入在 home.db 中搜索特定记录 - 无法将参数传递给 index.js

Android - 在联系人列表中搜索特定电话号码