swift 中带有 NSPredicate 的 NSBatchDeleteRequest
NSBatchDeleteRequest with NSPredicate in swift
如何使用带有 NSPredicate 的 NSBatchDeleteRequest 从 CoreData 中删除行。
我想删除超过 30 天的记录。
我不想获取内存中的所有数据,而是比较和删除,我想使用 NSBatchDeleteRequest,就像我们在 NSBatchUpdateRequest 中所做的那样。
这是我到目前为止编写的代码
let date = NSDate(); let yesterday = date.dateByAddingTimeInterval(-24*60*60); let predicate = NSPredicate(format: "date > %@", yesterday);
let fetchRequest = NSFetchRequest(entityName: "Notification");
let batchDelete = NSBatchDeleteRequest(fetchRequest: fetchRequest)
请在swift
中给出答案
这是一个简单的例子。使用 NSPredicate
可以过滤您的请求。
let calendar = NSCalendar.currentCalendar()
let thirtyDaysAgo = calendar.dateByAddingUnit(.Day, value: -30, toDate: NSDate(), options: [])
let fetchRequest = NSFetchRequest(entityName: "Notification")
fetchRequest.predicate = NSPredicate(format: "(date >= %@)", thirtyDaysAgo)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
try context.executeRequest(deleteRequest)
try context.save()
} catch {
print (error)
}
如何使用带有 NSPredicate 的 NSBatchDeleteRequest 从 CoreData 中删除行。
我想删除超过 30 天的记录。
我不想获取内存中的所有数据,而是比较和删除,我想使用 NSBatchDeleteRequest,就像我们在 NSBatchUpdateRequest 中所做的那样。
这是我到目前为止编写的代码
let date = NSDate(); let yesterday = date.dateByAddingTimeInterval(-24*60*60); let predicate = NSPredicate(format: "date > %@", yesterday);
let fetchRequest = NSFetchRequest(entityName: "Notification");
let batchDelete = NSBatchDeleteRequest(fetchRequest: fetchRequest)
请在swift
中给出答案这是一个简单的例子。使用 NSPredicate
可以过滤您的请求。
let calendar = NSCalendar.currentCalendar()
let thirtyDaysAgo = calendar.dateByAddingUnit(.Day, value: -30, toDate: NSDate(), options: [])
let fetchRequest = NSFetchRequest(entityName: "Notification")
fetchRequest.predicate = NSPredicate(format: "(date >= %@)", thirtyDaysAgo)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do {
try context.executeRequest(deleteRequest)
try context.save()
} catch {
print (error)
}