从核心数据提取,我可以通过使用NSPredicate来过滤我所得到的结果,但只能使用持久属性,而不能使用瞬态属性(as per this article from Apple)。可以使用什么方法使用瞬态属性或某种计算属性来进一步过滤数据?如何过滤从核心数据中获取的数据?
(这个问题的an earlier question细化,这是过于宽泛的。)
从核心数据提取,我可以通过使用NSPredicate来过滤我所得到的结果,但只能使用持久属性,而不能使用瞬态属性(as per this article from Apple)。可以使用什么方法使用瞬态属性或某种计算属性来进一步过滤数据?如何过滤从核心数据中获取的数据?
(这个问题的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)
在这种情况下,如果谓词包含瞬态属性,则过滤按预期工作(即,瞬态属性被正确评估);从核心数据获取时,具有瞬态属性的过滤器不会抛出错误,但它也不会返回任何结果。
资源,帮助我到达这个答案:"Higher Order Functions: Map, Filter, Reduce, and More
堆栈溢出文章:
从We-Heart-Swift.com filteredArrayUsingPredicate does not exist in swift Array(前两个答案)
希望这对我有同样问题的其他人有帮助。
简单地遍历你提取的结果,并采用适合你的过滤标准的对象,使用'for'循环,'.filer'等常用技术。 – shallowThought
@shallowThought - 非常感谢 - 这是我需要的提示。我的结果转载如下,其他人可能在我所在的地方,并会发现这有用,但这是您的答案,让我朝着正确的方向前进。 – ConfusionTowers