我对核心数据还不熟悉。我有数据库,其中包含不同类别的文章。我想从多个类别中获取数据,用户可以即时选择这些数据。现在我有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;
但是在获取请求时应用程序崩溃了。 还有其他办法吗? 请帮帮我。
非常感谢任何帮助。
答案 0 :(得分:1)
选择具有给定数组中任何类别的对象 一个简单的谓词就足够了:
NSPredicate(format: "catId IN %@", catArray)
备注:切勿使用String(format:)
动态构建谓词,
因为几乎可以肯定的是引用和逃避是错误的。
仅使用NSPredicate(format:)
,如有必要,请NSCompoundPredicate
。