设置 CoreData NSManagedObjectContext 线程优先级

     2023-03-05     229

关键词:

【中文标题】设置 CoreData NSManagedObjectContext 线程优先级【英文标题】:Set CoreData NSManagedObjectContext thread priority 【发布时间】:2016-06-07 15:53:54 【问题描述】:

至少从 iOS 9 开始,唯一不推荐用于不在主线程中运行的 Core Data 操作的线程并发类型是 NSPrivateQueueConcurrencyType。 我现在的问题是我想为此更改线程优先级,如下所示:

...:(int) neededPriority 
  _queue = dispatch_queue_create("Worker", DISPATCH_QUEUE_SERIAL);
  dispatch_set_target_queue(_queue,
    dispatch_get_global_queue(neededPriority, 0));

有时我需要高优先级,有时需要低优先级。但是当我调用[_privateContext performBlock:...] 时,我无法传递具有所需优先级的参数,上下文也没有任何属性来设置其线程优先级。 因此我的问题是:有没有办法将上下文队列放入某个线程优先级?

【问题讨论】:

【参考方案1】:

NSManagedObjectContext 实例被分配队列,而不是线程。与performBlock 例程关联的队列可以在任意后台线程中运行,因此您不能为上下文分配一般优先级。

相反,您可以从performBlock 块内部调用NSThread.setThreadPriority 来更改处理该块的线程的优先级。

您可能希望在更改线程的优先级之前保存它,并在块的末尾重置它。

【讨论】:

如果在主线程上使用performBlockAndWait:,队列将在主线程上运行块。所以任何NSThread 调用都将应用于主线程。 谢谢,对NSLog(@"Old thread priority: %f", [NSThread threadPriority]); if (![NSThread setThreadPriority:0.1]) NSLog(@"Couldn't set priority!"); else NSLog(@"New thread priority: %f", [NSThread threadPriority]); 的快速测试表明它似乎有效。 只是附加信息:这仅适用于设备,不适用于模拟器

coredata - 交付/设置默认数据

】coredata-交付/设置默认数据【英文标题】:coredata-deliver/setupdefaultdata【发布时间】:2012-08-1214:10:03【问题描述】:我在我的iOS应用程序中使用coreData。用户有可能将数据添加、删除到数据库中。我必须提供默认数据(一些不同的... 查看详情

如何立即设置CustomTableView(CoreData)

】如何立即设置CustomTableView(CoreData)【英文标题】:HowtosetCustomTableViewimmediately(CoreData)【发布时间】:2015-12-2808:32:43【问题描述】:我在ViewController中有一个TextField、Button和一个TableView我按Button->将文本导入数据并导出到TableVi... 查看详情

使用计算字段为 CoreData 设置 NSSortDescriptor

】使用计算字段为CoreData设置NSSortDescriptor【英文标题】:SetNSSortDescriptorforCoreDatausingacalculatedfield【发布时间】:2020-04-0115:28:25【问题描述】:我已使用扩展将计算属性添加到CoreData数据库。我想使用NSSortDescriptor和FetchRequest来根据... 查看详情

CoreData 关系澄清:如何有效地设置反向关系

】CoreData关系澄清:如何有效地设置反向关系【英文标题】:CoreDataRelationshipsClarification:Howtoeffectivelysetaninverserelationship【发布时间】:2010-10-1908:53:13【问题描述】:我有一个CoreData关系设置如下:(对不起,我是***的新手,所以... 查看详情

使用 CoreData 为 NSOutlineView 设置 NSTreeCcontroller

】使用CoreData为NSOutlineView设置NSTreeCcontroller【英文标题】:SettingupaNSTreeCcontrollerforaNSOutlineViewusingCoreData【发布时间】:2013-02-0321:57:37【问题描述】:我的模型如下所示:在我的测试项目中,我有以下两种方法:-(void)addChildWithName:(... 查看详情

为 NSManagedObject 的属性设置值后保存时 CoreData 崩溃

】为NSManagedObject的属性设置值后保存时CoreData崩溃【英文标题】:CoreDatacrashwhilesavingaftersettingvalueforNSManagedObject\'sproperty【发布时间】:2011-07-2608:40:01【问题描述】:我在保存CoreData时遇到问题。要记住的主要3件事:我正在使用NSF... 查看详情

没有上下文的CoreData关系设置?

】没有上下文的CoreData关系设置?【英文标题】:CoreDataRelationshipSettingwithoutContext?【发布时间】:2014-01-1914:10:36【问题描述】:我有两个NSManagedObject子类。Flight和Aircraft。每个Flight关联一个Aircraft。当用户创建Flight时,我只做以下... 查看详情

RestKit .20 with CoreData - 如何设置默认值

】RestKit.20withCoreData-如何设置默认值【英文标题】:RestKit.20withCoreData-Howtosetdefaultvalues【发布时间】:2013-09-0400:47:48【问题描述】:我正在使用带有CoreData的RestKit.20。我让RestKit成功调用JSONAPI并将响应存储到CoreData模型,没有任何... 查看详情

SwiftUI 从 CoreData 设置初始选择器值

】SwiftUI从CoreData设置初始选择器值【英文标题】:SwiftUISettingInitialPickerValueFromCoreData【发布时间】:2020-03-0623:36:29【问题描述】:我正在努力弄清楚如何让我的选择器显示已经存储的CoreData值。我希望它显示在选择器的右侧,就... 查看详情

设置 CoreData NSManagedObjectContext 线程优先级

】设置CoreDataNSManagedObjectContext线程优先级【英文标题】:SetCoreDataNSManagedObjectContextthreadpriority【发布时间】:2016-06-0715:53:54【问题描述】:至少从iOS9开始,唯一不推荐用于不在主线程中运行的CoreData操作的线程并发类型是NSPrivateQ... 查看详情

使用 MagicalRecord 3 的 CoreData 内存设置

】使用MagicalRecord3的CoreData内存设置【英文标题】:CoreDatain-memorysetupwithMagicalRecord3【发布时间】:2016-03-0117:07:05【问题描述】:您好,我正在使用CoreData+MagicalRecord3来管理我的应用程序中的数据。在那之前一切正常,但后来我意... 查看详情

CoreData - 将实体的属性设置为不为空 - 是不是应将属性设置为可选或强制

】CoreData-将实体的属性设置为不为空-是不是应将属性设置为可选或强制【英文标题】:CoreData-Settingapropertyofentitytobenotnull-ShouldtheattributebesetasOptionalorMandatoryCoreData-将实体的属性设置为不为空-是否应将属性设置为可选或强制【发... 查看详情

更新CoreData模型版本时如何为实体的新属性设置默认值

】更新CoreData模型版本时如何为实体的新属性设置默认值【英文标题】:HowtosetdefaultvaluefornewattributeofanEntitywhenupdateCoreDataModelVersion【发布时间】:2012-03-2015:44:35【问题描述】:我使用CoreData来保存我的应用程序的数据。有一个实... 查看详情

Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置

】Swift-如何在加载ViewController之前正确实现CoreData的更新/设置【英文标题】:Swift-HowtoProperlyImplementUpdating/SettingUpofCoreDataforusepriortoViewControllerloading【发布时间】:2018-10-0504:40:02【问题描述】:我的情况如下:我将使用CoreData来存... 查看详情

iOS:通过键值编码设置 coredata 属性?

】iOS:通过键值编码设置coredata属性?【英文标题】:iOS:Setcoredataattributesviakeyvaluecoding?【发布时间】:2014-09-2515:55:59【问题描述】:我只是想知道我该怎么做?即我有一个实体Friends和一个实体Transactions。现在每个朋友都有几笔... 查看详情

CoreData与CloudKit同步时将图像保存到CoreData?

】CoreData与CloudKit同步时将图像保存到CoreData?【英文标题】:SaveImagetoCoreDatawhileCoreDatasynchronizeswithCloudKit?【发布时间】:2021-05-2701:58:16【问题描述】:我正在开发一个应用程序,它使用CoreData和CloudKit,使用默认的NSPersistentCloudKit... 查看详情

使用 iOS 5 和 RestKit 设置 CoreData 应用程序的正确方法是啥

】使用iOS5和RestKit设置CoreData应用程序的正确方法是啥【英文标题】:What\'sthecorrectapproachtosetupCoreDataappwithiOS5andRestKit使用iOS5和RestKit设置CoreData应用程序的正确方法是什么【发布时间】:2012-11-1613:51:53【问题描述】:大家好,我已... 查看详情

Swift:CoreData NSManagedObject 的自定义设置器

】Swift:CoreDataNSManagedObject的自定义设置器【英文标题】:Swift:CustomSetterForCoreDataNSManagedObject【发布时间】:2014-09-0803:56:47【问题描述】:如何在Swift中为NSManagedObject实现自定义设置器。我需要在设置NSMangedObject属性之前完成任务... 查看详情