- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
NSFetchRequest *request = [Report fetchRequest];
request.predicate = [NSPredicate predicateWithFormat: @"reportId IN %@",self.selectedRowsInEditMode];
NSBatchDeleteRequest *deleteDetailsRequest = [[NSBatchDeleteRequest alloc] initWithFetchRequest:request];
deleteDetailsRequest.resultType = NSBatchDeleteResultTypeStatusOnly;
[self.managedObjectContext executeRequest:deleteDetailsRequest error:&errorExecuteRequest];
if (!errorExecuteRequest) {
NSError *deleteSaveError;
BOOL saveSuccessful = [self.managedObjectContext save:&deleteSaveError];
[self.tableView removeLoadingActivityView];
这是我尝试一次删除多个报告托管对象的代码,但是当调用 executeRequest 时,UI 会卡住一段时间然后删除。但是 NSBatchDeleteRequest 在删除方面应该非常快。我尝试了多次修改以使其正常工作但没有成功。我不确定我在这里做错了什么。所以任何人都可以建议让它在没有 UI 故障的情况下工作。
最佳答案
希望对后面的代码有所帮助!!
我最终添加了以下内容以处理批量删除后的上下文。
[self.managedObjectContext refreshAllObjects];
// Initialize Fetch Request
NSFetchRequest *fetchRequest = [Report fetchRequest];
// Add Sort Descriptors
fetchRequest.predicate = [NSPredicate predicateWithFormat: @"reportId IN %@",self.selectedRowsInEditMode];
// Initialize Asynchronous Fetch Request
NSAsynchronousFetchRequest *asynchronousFetchRequest = [[NSAsynchronousFetchRequest alloc] initWithFetchRequest:fetchRequest completionBlock:^(NSAsynchronousFetchResult *result) {
dispatch_async(dispatch_get_main_queue(), ^{
// Process Asynchronous Fetch Result
[weakSelf processAsynchronousFetchResult:result];
});
}];
// Execute Asynchronous Fetch Request
[self.managedObjectContext performBlock:^{
// Execute Asynchronous Fetch Request
NSError *asynchronousFetchRequestError = nil;
NSAsynchronousFetchResult *asynchronousFetchResult = (NSAsynchronousFetchResult *)[weakSelf.managedObjectContext executeRequest:asynchronousFetchRequest error:&asynchronousFetchRequestError];
if (asynchronousFetchRequestError) {
NSLog(@"Unable to execute asynchronous fetch result.");
NSLog(@"%@, %@", asynchronousFetchRequestError, asynchronousFetchRequestError.localizedDescription);
}
}];
或者在下面使用你使用全局队列在后台运行东西和主队列来更新 UI
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
//Background Thread
dispatch_async(dispatch_get_main_queue(), ^(void){
//Run UI Updates
});
});
关于ios - UI 在执行 NSBatchDeleteRequest 时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47516766/
我正在编写一个 OS X 应用程序,它需要能够删除其核心数据存储中保存的所有“SongEntity”实例。但是,当我尝试执行 NSBatchDeleteRequest 时,我的应用程序崩溃,控制台输出
我有一个应用程序,它将与服务器同步,其中的数据每天都会更改。在同步期间,我删除了某些实体的所有数据并使用新数据重新加载。我正在使用以下代码: func SyncronizeUserCommen
我对 NSBatchDeleteRequest 有问题,似乎无法删除关系引用。 我有两个实体: 新闻 类别 其中一个类别可以有多个新闻。 现在,当我尝试使用 NSBatchDeleteRequest
我的 CoreData 模型有两个子实体“CarA”和“CarB”,它们具有相同的抽象父实体“Car”。 我正在尝试使用删除所有 CarA 对象 func deleteObjects(enti
我正在阅读 Delete/Reset all entries in Core Data? . 如果我按照以下步骤操作,我会得到意想不到的结果: 调用下面的代码 然后在模拟器中查询一个实体,我会得到一个
在我的应用程序中,当我从网络服务刷新实体的内容时,我删除了核心数据中的所有记录并插入了所有新记录。但是,很多时候记录并没有从上下文中删除,即使我再次调用上下文也是如此。因此,当我保存时,旧的仍然存在,
使用 swift 2.1 和 CoreData,我想删除数据库中的所有数据。 按照下面的方式,效果很好 let context = (UIApplication.sharedApplication()
我有以下代码。 let workorderFetchRequest = NSFetchRequest(entityName: "Workorders") let d
我在 Core Data 中看到过很多关于批量删除的问题,但似乎没有一个能解决我的问题。 我正在使用 Core Data 创建一个 iOS 9/Swift 应用程序。在今年的 WWDC 上,我参加了核
我正在尝试使用 NSBatchDeleteRequest 删除一堆实体,其中许多实体都有删除级联和/或无效规则。 我第一次尝试删除任何内容失败,并且返回的 NSError 包含字符串“批量删除不支持删
NSFetchRequest *request = [Report fetchRequest]; request.predicate = [NSPredicate predicateWithForma
如何使用带有 NSPredicate 的 NSBatchDeleteRequest 从 CoreData 中删除行。 我想删除超过 30 天的记录。 我不想获取内存中的所有数据,而是比较和删除,我想使
我在使用 NSBatchDeleteRequest 后从 NSFetchedResultsControllerDelegate 获取准确更新时遇到问题,更改作为更新类型而不是 didChange 委托
我目前正在对一个与 Core Data 交互的层进行单元测试。它保存、删除和更新 Item目的。但是,我的测试试图保存几个 Item s 然后执行批量删除一直失败。 这是Item : extensio
我有一些执行批量删除请求的核心: extension NSManagedObject: Clearable { /// Clears all objects of this type in c
我遇到了这个问题 'NSBatchDeleteRequest' is only available on iOS 9.0 or newer class func delete(placeId:Int6
所以,将我的代码迁移到 Swift 3 让我有点卡住了。似乎 NSBatchDeleteRequest 现在需要 iOS 10?我可以构建代码的唯一方法是使用以下代码片段: func removeAl
我是一名优秀的程序员,十分优秀!