NSBatchDeleteRequest在Swift 3中只适用于iOS 10?
NSBatchDeleteRequest在Swift 3中只适用于iOS 10?
所以,将我的代码迁移到Swift 3
让我有点困扰。看起来NSBatchDeleteRequest
现在需要iOS 10
了?我唯一能让代码构建的方法是使用以下代码片段:
func removeAllChargerData(){
// 从持久存储中删除所有充电数据
let fetchRequest: NSFetchRequest
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
问题出现的原因是NSBatchDeleteRequest在Swift 3中只能在iOS 10系统中使用。在Swift 3中,如果我们在iOS 9系统中使用NSBatchDeleteRequest,会遇到问题。解决方法是在Swift 3中,我们需要使用不给变量指定特定类型的fetchrequest,可以像这样使用fetchrequest:
let fetchRequest = NSFetchRequest
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
这样我们就可以在Swift 3中使用NSBatchDeleteRequest了。同时,如果我们需要了解更多关于NSBatchDeleteRequest的文档,可以查看提供的链接。但需要注意的是,提供的链接可能是针对Swift 2的,因为它是从2015年的。在Swift 2中,NSBatchDeleteRequest可以正常工作,但在Swift 3中,它只能在iOS 10中工作。