ios - CoreStore 重新获取谓词 NSFetchRequest 问题

标签 ios swift nsfetchedresultscontroller nsfetchrequest corestore

如果我弄清楚了,我需要在搜索某些内容时重新获取监视器:

我有这个函数来重新获取提供的字符串

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 中,这是函数 refetch 的样子:

 public func refetch(_ fetchClauses: [FetchClause]) {

        self.refetch { (fetchRequest) in

            fetchClauses.forEach { $0.applyToFetchRequest(fetchRequest) }
        }
    }

public protocol FetchClause {

    func applyToFetchRequest<T>(_ fetchRequest: NSFetchRequest<T>)
}

最佳答案

只需替换这个:

.where(format: "%K CONTAINS[cd] %@", #keyPath(ListEntityType.name), searchText)

Where<ListEntityType>("%K CONTAINS[cd] %@", #keyPath(ListEntityType.name), searchText)

另一个语法糖:您可以摆脱#keyPath 引用并改用\ListEntityType.name

关于ios - CoreStore 重新获取谓词 NSFetchRequest 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57511579/

相关文章:

ios - Apple Watch 和 iPhone 之间的通信

ios - 仅为视网膜添加图像

ios - 如何防止在解析时重复输入?

swift - FetchedResultsController 值不会覆盖自定义 NSManagedObject 初始值

iphone - Windows Azure 工具包

ios - 如何改进 Swift/Xcode iOS 应用程序中文本字段的控制语句?

json - 如何遍历结构?

swift - 奇怪的错误 nw_protocol_get_quic_image_block_invoke dlopen libquic 失败

core-data - NSFetchedResultsController 刷新以获取新数据

ios - NSFetchedResultsController W/Custom Table Cell Incompatible Pointer