Ответ 1
Вам просто нужно указать правильный тип для общего типа:
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ChargerPrimary")
Итак, переместив мой код на 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")
Вам просто нужно указать правильный тип для общего типа:
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ChargerPrimary")
Возможно, он также работает для меня в IOS 10
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "ChargerPrimary")
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
Вы должны использовать fetchrequest как это, не указывая конкретный тип на varible
Вот DEMO Для IOS 9