我使用以下代码获取"类别"中的所有数据。
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext = appDelegate.managedObjectContext!
let fetchRequest = NSFetchRequest(entityName:"category")
let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]?
我如何仅将类别带入"类型"等于"产品"?
答案 0 :(得分:24)
要在核心数据中“过滤”结果,请使用NSPredicate
,如下所示:
let filter = "products"
let predicate = NSPredicate(format: "type = %@", filter)
fetchRequest.predicate = predicate
答案 1 :(得分:0)
您可以在fetchedResults上使用.filter。
答案 2 :(得分:0)
所以,在下面的例子中
在第一步中,我们将添加给我们想要过滤的值。
在第二步中,我们将添加一个谓词,在该谓词中,我们将提供我们想要获取的数据库键,在我的情况下,该值是“id”,此外还有一个值,我们要过滤。>
在第三步中,指定在 NSFetchRequest 中保存所有数据的实体名称。
然后分配谓词。
使用上下文对象来获取对象。
private let context = (NSApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let filter = id
let predicate = NSPredicate(format: "id = %@", filter)
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"TodoListItem")
fetchRequest.predicate = predicate
do{
let fetchedResults = try context.fetch(fetchRequest) as! [NSManagedObject]
print("Fetch results")
if let task = fetchedResults.first as? TodoListItem{
print(task)
}
// try context.save()
}catch let err{
print("Error in updating",err)
}