在我的应用中,我正在使用Core Data。现在,我想从数据库中获取数据,为此,我正在使用获取请求。但是我想两个在单个提取请求中使用两个NSPrediate,所以我该怎么做。

这是我的代码:

let feedfetch = NSFetchRequest(entityName: "Feed")
feedfetch.predicate = NSPredicate(format: "userid == %@", userid)

let fetchedPerson = try moc.executeFetchRequest(feedfetch)

但是我想使用两个或更多个谓词,那么我该怎么做呢?

我想在一个提取请求中调用所有这些,所以我该怎么做
let feedfetch = NSFetchRequest(entityName: "Feed")
feedfetch.predicate = NSPredicate(format: "userid == %@", userid)
feedfetch.predicate = NSPredicate(format: "is_deleted == %@", "0")
let sortDescriptor = NSSortDescriptor(key: "feed_id", ascending: false,selector: #selector(NSString.localizedStandardCompare))
feedfetch.sortDescriptors = [sortDescriptor]

let fetchedPerson = try moc.executeFetchRequest(feedfetch)

最佳答案

如果出于任何原因,您需要使用两个谓词(NSPredicate对象)而不是一行:

"(userid == %@) AND (is_deleted == %@)"

然后使用NSCompoundPredicate API:
feedfetch.predicate = NSCompoundPredicate(type:.AndPredicate, subpredicates:[
    NSPredicate(format: "userid == %@", userid),
    NSPredicate(format: "is_deleted == %@", "0")])

关于ios - 如何在单个提取请求中调用两个NSPredicate。核心数据iOS Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37654656/

10-09 16:14
查看更多