【问题标题】:NSBatchDeleteRequest with NSPredicate in swift快速使用 NSPredicate 的 NSBatchDeleteRequest
【发布时间】:2016-09-22 12:01:22
【问题描述】:

如何使用带有 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 core-data nsbatchupdaterequest


    【解决方案1】:

    这是一个简单的例子。可以使用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)
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多