如何过滤从Core Data获取的数据?

时间:2016-12-25 00:19:26

标签: swift core-data filter

从核心数据中获取,我可以使用NSPredicate来过滤我得到的东西,但只能使用持久属性,而不能使用瞬态属性(as per this article from Apple)。可以使用哪些方法使用瞬态属性或某种计算属性来进一步过滤数据?

(这个问题是an earlier question的改进,过于宽泛。)

1 个答案:

答案 0 :(得分:0)

感谢@shallowThought,答案非常简单:

设置了谓词后,过滤使用以下代码行:

    let p1 = NSPredicate(format: "lineNumber > 4")  
    let p2 = NSPredicate(format: "lineNumber < 7")  
//        let minLineNumberStr = "4"
//        let p3 = NSPredicate(format: "lineNumber >= %@", minLineNumberStr) // same as p1, but more flexible

    var predArray : [NSPredicate] = []

// Comment out the predicates we DON'T actually use:
        predArray.append(p1)
        predArray.append(p2)
//        predArray.append(p3)

    let myPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: predArray)

在这种情况下,theLines是从CoreData检索的内容,myPredicate是我想要过滤的内容,例如

{{1}}

在这种情况下,如果谓词包含瞬态属性,则过滤按预期工作(即正确评估瞬态属性);从核心数据中获取时,具有transient属性的过滤器不会抛出错误,但它也不会返回任何结果。

帮助我得出这个答案的资源:

希望这对我有同样问题的其他人有帮助。