仅适用于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的演示