gpt4 book ai didi

swift - 如何过滤从核心数据中获取的数据?

转载 作者:行者123 更新时间:2023-11-28 08:20:56 25 4
gpt4 key购买 nike

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

(这个问题是对 an earlier question 的细化,它过于宽泛。)

最佳答案

感谢@shallowThought,答案相当简单:

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

filteredLines = theLines.filter {myPredicate.evaluate(with: ($0))}

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

    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)

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

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

希望这篇文章能帮到和我有同样问题的人。

关于swift - 如何过滤从核心数据中获取的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41317842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com