我有这样的字典格式数据:
Box
我的TableViewController列出了所有“标题”数据。
我正在为用户实现SearchController,以便仅从“标题”中搜索特定数据。
我的代码似乎只显示与搜索查询中的第一个字符匹配的结果。
例如:如果用户输入“A”,则显示带有“A”的所有标题结果,但如果用户继续使用“A”(带空格),则searchResult中的所有内容都将消失。
这是我的尝试:
var data: [[String:AnyObject]] =
[
[
"id": "1",
"title": "A Title",
"Detail": "This is a String"
],
[
"id": "2",
"title": "A Title Again",
"Detail": "This is a String"
]
]
答案 0 :(得分:2)
你的谓词错了。现在设置它的方式,谓词中的self
指的是数组中的字典中的对象,字典没有子字符串:)为了使其工作,我们必须告诉谓词检查特定键下的值。这可以通过两种方式完成:
let searchPredicate = NSPredicate(format: "title CONTAINS[c] %@", searchController.searchBar.text!)
// OR
let searchPredicate = NSPredicate(format: "SELF[\"title\"] CONTAINS[c] %@", searchController.searchBar.text!)
这样,谓词将检查title
键下的值,如果它包含搜索栏中的文本。
我不知道为什么它只用单个字母。