如果我很清楚,搜索某些内容时需要重新获取监视器:
我具有使用提供的字符串进行重新提取的功能
func search(searchText: String) {
self.monitor.refetch(.where(format: "%K CONTAINS[cd] %@", #keyPath(ListEntityType.name), searchText),
OrderBy<ListEntityType>(.ascending("name")))
}
但是此代码不可编译,仅以下代码可编译:
func search(searchText: String) {
self.monitor.refetch(Where<ListEntityType>("name", isEqualTo: searchText),
OrderBy<ListEntityType>(.ascending("name")))
}
但这只是等号,但我不仅需要搜索整个单词,还需要使用format: "%K CONTAINS[cd] %@
在CoreStore中,这是函数重新获取的样子:
public func refetch(_ fetchClauses: [FetchClause]) {
self.refetch { (fetchRequest) in
fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest) }
}
}
public protocol FetchClause {
func applyToFetchRequest<T>(_ fetchRequest: NSFetchRequest<T>)
}
答案 0 :(得分:1)
只需替换一下:
.where(format: "%K CONTAINS[cd] %@", #keyPath(ListEntityType.name), searchText)
使用
Where<ListEntityType>("%K CONTAINS[cd] %@", #keyPath(ListEntityType.name), searchText)
另一种语法糖:您可以摆脱#keyPath引用,而改用\ ListEntityType.name