【问题标题】:NSBatchDeleteRequest in Swift 3 for iOS 10 only?Swift 3 中的 NSBatchDeleteRequest 仅适用于 iOS 10?
【发布时间】:2017-02-16 21:28:10
【问题描述】:

所以,将我的代码迁移到 Swift 3 让我有点卡住了。现在看来NSBatchDeleteRequest 需要iOS 10?我可以构建代码的唯一方法是使用以下 sn-p:

func removeAllChargerData(){
    // Remove all charging data from persistent storage
    let fetchRequest: NSFetchRequest<NSFetchRequestResult> = ChargerPrimary.fetchRequest()
    let entity = NSEntityDescription.entity(forEntityName: "ChargerPrimary", in: self.secondMoc)
    fetchRequest.entity = entity
    let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

    do {
        try self.secondMoc.execute(deleteRequest)
    } catch {
        let deleteError = error as NSError
        NSLog("\(deleteError), \(deleteError.localizedDescription)")
    }

}

但是,会显示一条警告,指出 fetchRequest() 仅在 iOS 10 和更新版本中可用。如果我按以下方式定义fetchRequest,则会收到错误消息,因为它期望fetchRequest 具有NSFetchRequestResult 参数类型:

let fetchRequest = NSFetchRequest<ChargerPrimary>(entityName: "ChargerPrimary")

【问题讨论】:

  • 我也有同样的困惑。不幸的是,没有来自苹果的文档 - 猜想他们正忙于提供所有这些新的简洁功能,所以可以理解。
  • 不过,它仍然是一个非常重要的功能,似乎并没有完全损坏。 :/ 考虑到 Swift 3 和 Xcode 8 在测试版中花费的时间,我真的不认为这是一个可以理解的遗漏。
  • 您的问题只是一般的获取请求,而不是批量删除

标签: ios swift xcode


【解决方案1】:

您只需要为泛型指定正确的类型:

let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ChargerPrimary")

【讨论】:

  • 但是你可以在 iOS 9 中将它与 NSBatchDeleteRequest 一起使用吗?我怀疑答案是现在,这是这里的实际问题:How to use NSBatchDeleteRequest in Swift 3 with iOS 9.
  • @Zygote 我刚刚在iOS9.3模拟器上测试过,似乎运行良好。你有什么问题?
【解决方案2】:

可能它在 IOS 10 中也适用于我

 let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ChargerPrimary")
 let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

你应该像这样使用 fetchrequest 而不给变量指定特定类型

这里是DEMO IOS 9

【讨论】:

  • 是的,如果你想要文档,我会给你一个链接
  • @Zygote 你从那个链接得到你想要的吗?
  • 稍后我将不得不验证它,但我怀疑您发布的链接是针对 Swift 2 的,因为它是从 2015 年开始的。澄清一下:NSBatchDeleteRequest 对我来说在 Swift 2 中工作得很好,但在 Swift 3 中我似乎只能让它在 iOS 10 上工作。
猜你喜欢
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 2017-03-19
  • 1970-01-01
相关资源
最近更新 更多