我有UITableView
UISearchbar
,我可以根据search text
中的UISearchbar
过滤数据。
CoreData
表包含3 attributes
name, notes, date
我想根据User
搜索文本搜索三列中的任何匹配项。
所以我尝试了这个:
let searchText = searchText.lowercased()
let query = "name contains[cd] %@ OR notes contains[cd] %@ OR date contains[cd] %@"
let predicate = NSPredicate(format: query, searchText, searchText, searchText)
有没有办法一次传递相同的参数(searchText
)?
像Java
字符串格式化程序:
let query = "name contains[cd] %1$@ OR notes contains[cd] %1$@ OR date contains[cd] %1$@"
let predicate = NSPredicate(format: query, searchText)
答案 0 :(得分:2)
您可以使用替换变量:
let searchText = searchText.lowercased()
let template = NSPredicate(format: "name contains[cd] $SRCH OR notes contains[cd] $SRCH OR date contains[cd] $SRCH")
let subVars = ["SRCH": searchText]
let predicate = template.withSubstitutionVariables(subVars)
参见"使用谓词模板创建谓词"在Apple Documentation。