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")

2 ответа

Решение

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

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

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

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

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

Вот ДЕМО ДЛЯ IOS 9

Другие вопросы по тегам