我正在尝试根据工作正常的用户搜索文本从核心数据中过滤结果。我正在努力制作它,以便有几个关键术语可以带来特定的结果。
我有一个 Colour
实体,它与另一个实体 to-many
有 ProjectColour
关系。 ProjectColour
实体有两个字段,我想通过 fullLeft
和 partialLeft
进行搜索。
我想要做的是当我搜索术语“完整”以带回任何具有 Colour
字段 ProjectColour
的 fullLeft > 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/