ios - 如何在 CoreData iOS 谓词生成器中多次传递相同的参数?

标签 ios swift core-data nspredicate

我有一个 UITableViewUISearchbar这让我可以根据 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)

最佳答案

您可以使用替换变量:

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 中的“使用谓词模板创建谓词” .

关于ios - 如何在 CoreData iOS 谓词生成器中多次传递相同的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170184/

相关文章:

ios - 以编程方式在其他 View 的底部添加 subview

ios - UINavigationController 跳过推送当前 View Controller

ios - 调用 iOS webview HTTPS(自签名证书)

iOS - NSManagedObject 在不保存的情况下保持分配多长时间

ios - iOS 上通过 Core Data 的离线模式

ios - 核心数据: How to check if data is in consecutive dates?

ios - 如何从 xib 文件更改 iPhone 和 iPad 中的键盘布局?

ios - 单元测试策略,理想的代码覆盖基线

javascript - 自动播放视频 IPhone 低功耗模式不起作用

ios - 如何执行modalSegue?