我对核心数据还很陌生。我有包含不同类别文章的数据库。我想从多个类别中获取数据,用户可以即时选择这些类别。现在我有 NSArray,它包含选定的多个类别(从 1 到 n 计数)我想为选定的类别添加谓词,但我无法这样做。据我所知,我添加了 for 循环以在谓词中添加类别,但它不起作用。
for i in 0...(catArray?.count)!-1 {
let str = String(format:"catId = %@",(catArray?.object(at: i) as? NSNumber)!)
predicateString = predicateString+str
}
let dP = NSPredicate(format:"%@",predicateString)
fetchedRequest.predicate=dP;
但是应用程序在获取请求时崩溃了。 还有其他方法吗? 请帮我解决这个问题。
非常感谢任何帮助。
最佳答案
从给定的数组中选择具有任何类别的对象 一个简单的谓词就足够了:
NSPredicate(format: "catId IN %@", catArray)
备注:永远不要使用 String(format:)
来动态构建谓词,
因为几乎可以肯定引用和转义是错误的。
仅使用 NSPredicate(format:)
,如有必要,使用 NSCompoundPredicate
。
关于swift - 如何在核心数据中使用来自 NSArray 的动态多个 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45073774/