我正在尝试根据工作正常的用户搜索文本从核心数据中过滤结果。我正在努力制作它,以便有几个关键术语可以带来特定的结果。

我有一个 Colour 实体,它与另一个实体 to-manyProjectColour 关系。 ProjectColour 实体有两个字段,我想通过 fullLeftpartialLeft 进行搜索。

我想要做的是当我搜索术语“完整”以带回任何具有 Colour 字段 ProjectColourfullLeft > 0 时。
partialLeft 和再次或全部相同。

到目前为止,我有这个,但不确定如何检查 NSSet 中的对象的谓词

    if ( searchedText.count > 0 ) {
        if searchedText == "full" {

        } else if searchedText == "partial" {

        } else if searchedText == "all" {

        } else {
            fetchRequest.predicate = NSPredicate(format: "name contains[cd] %@", searchedText)
        }
    }

最佳答案

解决了以下问题

    if ( searchedText.count > 0 ) {
        if searchedText.lowercased() == "full" {
            fetchRequest.predicate = NSPredicate(format: "ANY projectColours.fullLeft > 0")
        } else if searchedText.lowercased() == "partial" {
            fetchRequest.predicate = NSPredicate(format: "ANY projectColours.partialLeft > 0")
        } else if searchedText.lowercased() == "all" {
            fetchRequest.predicate = NSPredicate(format: "ANY projectColours.fullLeft > 0 OR ANY projectColours.partialLeft > 0")
        } else {
            fetchRequest.predicate = NSPredicate(format: "name contains[cd] %@", searchedText)
        }
    }

关于swift - 带 NSSet 的谓词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55984692/

10-12 14:42