NSBatchDeleteRequest在Swift 3中只适用于iOS 10?

3 浏览
0 Comments

NSBatchDeleteRequest在Swift 3中只适用于iOS 10?

所以,将我的代码迁移到Swift 3让我有点困扰。看起来NSBatchDeleteRequest现在需要iOS 10了?我唯一能让代码构建的方法是使用以下代码片段:

func removeAllChargerData(){

// 从持久存储中删除所有充电数据

let fetchRequest: NSFetchRequest = 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(entityName: "ChargerPrimary")

0
0 Comments

问题出现的原因是NSBatchDeleteRequest在Swift 3中只能在iOS 10系统中使用。在Swift 3中,如果我们在iOS 9系统中使用NSBatchDeleteRequest,会遇到问题。解决方法是在Swift 3中,我们需要使用不给变量指定特定类型的fetchrequest,可以像这样使用fetchrequest:

let fetchRequest = NSFetchRequest(entityName: "ChargerPrimary")

let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

这样我们就可以在Swift 3中使用NSBatchDeleteRequest了。同时,如果我们需要了解更多关于NSBatchDeleteRequest的文档,可以查看提供的链接。但需要注意的是,提供的链接可能是针对Swift 2的,因为它是从2015年的。在Swift 2中,NSBatchDeleteRequest可以正常工作,但在Swift 3中,它只能在iOS 10中工作。

0
0 Comments

在Swift 3和iOS 10中,可以使用NSFetchRequest的泛型方法来指定正确的类型。如下所示:

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

然而,在iOS 9中,是否可以在NSBatchDeleteRequest中使用这种方法呢?我怀疑答案是否定的,这也是实际问题的关键:如何在Swift 3中使用NSBatchDeleteRequest,并且支持iOS 9。

我刚刚在iOS 9.3模拟器上进行了测试,似乎能够正常工作。你在使用中遇到了什么问题呢?

0