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