Swift: 如何在 Core Data 中过滤
Swift: How to filter in Core Data
我正在使用以下代码获取 "category" 中的所有数据。
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]?
如何只引入 "type" 等于 "products" 的类别?
为了 "filter" 在 Core Data 中产生结果,请像这样使用 NSPredicate
:
let filter = "products"
let predicate = NSPredicate(format: "type = %@", filter)
fetchRequest.predicate = predicate
您可以对 fetchedResults 使用 .filter。
所以,在下面的例子中
- 在第一步中,我们将添加要过滤的值。
- 在第二步中,我们将添加一个谓词,我们将在其中提供我们想要获取的值的数据库键,在我的例子中是“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)
}
我正在使用以下代码获取 "category" 中的所有数据。
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]?
如何只引入 "type" 等于 "products" 的类别?
为了 "filter" 在 Core Data 中产生结果,请像这样使用 NSPredicate
:
let filter = "products"
let predicate = NSPredicate(format: "type = %@", filter)
fetchRequest.predicate = predicate
您可以对 fetchedResults 使用 .filter。
所以,在下面的例子中
- 在第一步中,我们将添加要过滤的值。
- 在第二步中,我们将添加一个谓词,我们将在其中提供我们想要获取的值的数据库键,在我的例子中是“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)
}