如何在Core数据中使用NSArray中的Dynamic Multiple NSPredicate

时间:2017-07-13 07:13:08

标签: swift core-data nspredicate

我对核心数据还不熟悉。我有数据库,其中包含不同类别的文章。我想从多个类别中获取数据,用户可以即时选择这些数据。现在我有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;

但是在获取请求时应用程序崩溃了。 还有其他办法吗? 请帮帮我。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

选择具有给定数组中任何类别的对象 一个简单的谓词就足够了:

NSPredicate(format: "catId IN %@", catArray)

备注:切勿使用String(format:)动态构建谓词, 因为几乎可以肯定的是引用和逃避是错误的。 仅使用NSPredicate(format:),如有必要,请NSCompoundPredicate