【发布时间】: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 在测试版中花费的时间,我真的不认为这是一个可以理解的遗漏。
-
您的问题只是一般的获取请求,而不是批量删除