NSBatchDeleteRequest в Swift 3 только для iOS 10?

Итак, переместив мой код на 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:

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

Ответ 1

Вам просто нужно указать правильный тип для общего типа:

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

Ответ 2

Возможно, он также работает для меня в IOS 10

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

Вы должны использовать fetchrequest как это, не указывая конкретный тип на varible

Вот DEMO Для IOS 9