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

ard*_*evd 15 xcode ios swift

所以,迁移我的代码让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)")
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,会显示一条警告,指示fetchRequest()仅在iOS 10更新和更新时可用.如果我定义fetchRequest以下方式,我得到一个错误,因为它期望fetchRequestto有一个NSFetchRequestResult参数类型:

let fetchRequest = NSFetchRequest<ChargerPrimary>(entityName: "ChargerPrimary")
Run Code Online (Sandbox Code Playgroud)

pba*_*sdf 9

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

let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ChargerPrimary")
Run Code Online (Sandbox Code Playgroud)