swift - 如何在核心数据中使用来自 NSArray 的动态多个 NSPredicate

标签 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;

但是应用程序在获取请求时崩溃了。 还有其他方法吗? 请帮我解决这个问题。

非常感谢任何帮助。

最佳答案

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

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

备注:永远不要使用 String(format:) 来动态构建谓词, 因为几乎可以肯定引用和转义是错误的。 仅使用 NSPredicate(format:),如有必要,使用 NSCompoundPredicate

关于swift - 如何在核心数据中使用来自 NSArray 的动态多个 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45073774/

相关文章:

iphone - NSManagedObject 异常 “this class is not key value coding-compliant” 并在 ios 6 中使应用程序崩溃,但适用于 ios 5

iphone - NSPredicate 用于一对多关系

ios - UITableView 在对象中搜索名称

ios - 如何删除子托管对象上下文上的临时对象?

swift - 打开和保存在非常简单的基于文档的 Swift 4 应用程序中不起作用

ios - 在 Xcode 中构建时添加变量

swift - 如何按搜索词过滤短语数组

ios - 当上下文为 nil 时,Swift Temp CoreData 对象无法设置 ivars

ios - NSPredicate - 获取具有一对多关系的实体

swift - 无法在 Swift 3 中设置 AWSAPIGatewayClient 配置?