仅适用于iOS 10的Swift 3中的NSBatchDeleteRequest?

所以,我的代码迁移到Swift 3让我有点卡住了。 看来NSBatchDeleteRequest现在需要iOS 10吗? 我可以使代码生成的唯一方法是使用以下代码片段:

 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参数types:

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

您只需要为generics指定正确的types:

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

也许这也是在IOS 10中为我工作

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

你应该像这样使用fetchrequest,而不要把特定的types改为varible

这里是IOS 9的演示