NSFetchedResultsController 委托和后台驱动的更新

2024-01-09

我在开发访客管理应用程序时遇到了 NSFetchedResultsController 问题。

该应用程序基本上在后台下载来宾列表(使用 NSOperation 子类),将它们插入到托管对象上下文中,然后将它们呈现在 UI 线程上的表视图中。

我认为我遵循核心数据多线程规则(我有单独的 MOC 用于在其线程上创建的操作,我使用 did-save 通知等同步我的主 MOC)。

我不完全理解的是 NSFetchedResultsController 的行为,它似乎在后台线程而不是主线程调用其委托方法(controllerDidChangeContent 等),这会导致非法的 UI 更新。

所以我的问题是 - 使用 NSFetchedResultsControllerDelegate 观察来自 MOC 保存通知的更改是否合法,还是 NSFetchedResultsControllerDelegate 设计为仅适用于主线程上完成的更改?

我不确定我的解释是否足够清楚,如果不是我可以发布一些代码来演示问题。


我的猜测是您的 MOC 已保存通知正在发送并观察到在后台线程而不是主事件线程上。这会导致NSFetchedResultsControllerDelegate在后台线程上发送委托消息。

您需要确保您的保存通知观察者将控制权传递给主线程,例如:

- (void)backgroundMOCDidSaveNotifiaction:(NSNotification *)notification
{
    [uiMOC performSelectorOnMainThread:
         @selector(mergeChangesFromContextDidSaveNotification:)
     withObject:notification waitUntilDone:NO];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSFetchedResultsController 委托和后台驱动的更新 的相关文章

  • 在iPhone上将CSV文件读入sqlite3

    有没有办法在iPhone上将CSV文件读入sqlite3 sqlite3 是否有类似于 SQL 命令的功能 LOAD DATA LOCAL INFILE file csv INTO TABLE TABLENAME FIELDS TERMIN
  • Java-线程与CPU的关系

    我对多线程还很陌生 我正在开发一个项目 尝试在我的 Java 程序中使用 4 个 CPU 我想做类似的事情 int numProcessors Runtime getRuntime availableProcessors ExecutorS
  • 在 std::thread 创建的线程中调用 pthread_sigmask 是一个好习惯吗?

    1 我是 std thread 的新手 我想知道调用是否是一个好的做法pthread sigmask 阻止某些信号特别的线程创建者std thread 我不希望新线程接收SIGTERM SIGHUP等信号 因为主进程已经安装了这些信号的处理
  • 在运行时动态创建核心数据模型

    是否可以在运行时从服务器上的一组实体生成核心数据模型 例如SharePoint 列表或 SQL MySQL Parse 我正在尝试采用动态路线 因为 SharePoint 列表 SQL Parse 中的字段可能会在将来随时添加 这意味着应用
  • 核心数据迁移后出现 NSRangeException

    在向我的应用程序添加新的核心数据模型版本后 我执行了轻量级迁移 显然成功了 迁移的文件加载正常 但在第一次尝试通过特定关系访问属性时 应用程序崩溃并显示NSRangeException NSArrayM objectAtIndex inde
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 将静态库合并为单个

    如何将静态库合并为一个 我确实有三个静态库 libSignatureLibary armv6 a libSignatureLibary armv7 a 和 libSignatureLibary i368 a 现在我想将这三个文件合并到一个库
  • 如何开始复杂级别的跨平台移动应用开发? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 排序线程按照它们创建/启动的顺序运行

    我如何按照线程实例化的顺序对线程进行排序 我怎样才能让下面的程序按顺序打印数字1 10 public class ThreadOrdering public static void main String args class MyRunn
  • iPhone 上的双精度与浮动

    我刚刚听说 iPhone 本身无法进行双倍操作 从而使它们比常规浮动慢得多 这是真的 证据 我对这个问题很感兴趣 因为我的程序需要高精度计算 而且我将不得不在速度上妥协 iPhone 可以在硬件中执行单精度和双精度算术 在 1176 原始
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • 异步填充数据集

    下面的方法用于填充数据集 如果我们以同步方式调用这个方法 它就可以正常工作 但现在我们需要以异步方式调用这个方法 那么我需要做哪些更改才能使下面的方法正常工作而不会出现任何问题 public DataSet Filldata string
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • 如何在 UIScrollView 中启用缩放

    如何启用缩放功能UIScrollView 答案是here https developer apple com documentation uikit uiscrollview 滚动视图还可以处理内容的缩放和平移 当用户做出捏合或张开手势时
  • 从应用程序启动 iPhone 设置屏幕?

    我正在开发一个应用程序 我希望按下按钮时 iPhone 设置屏幕应该打开 苹果有访问限制吗 到底能不能 如果能的话怎么办 不 你不能那样做 但是 作为替代方案 您可以使用这个框架 http www inappsettingskit com
  • SwiftUI 全屏图像背景

    我想在背景中显示全屏图像 我已经实现了这个 struct LoginView View var body some View VStack Spacer Text Hallo Text Hallo2 Text Hallo2 Text Hal
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 将图像存储在核心数据中

    我想在更新记录时存储每位员工的图像 我怎样才能做到这一点 我有一个字典 存储员工的姓名 ID 和部门 现在我想将图像保存在一起 Core Data 支持 二进制数据 类型 当您定义具有二进制数据字段的模型时 它会创建具有 NSData 字段
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • 删除SAS中所有观测值都不包含特定值的组

    我想删除其观察值中没有 NUM 14 的整个组 所以就像这样 原始数据 ID NUM 1 14 1 12 1 10 2 13 2 11 2 10 3 14 3 10 由于 ID 2 中都不包含 NUM 14 因此我删除了组 2 它应该看起来
  • 使用“/”和 Slugs 的 Rails RESTful 路由

    我希望做一些类似 wordpress slug 的事情 其中 我有一个像这样的 URL 同时维护 RESTful 路由 http foo com blog 2009 12 04 article title 我对保持 RESTFUL 路由感兴
  • 如何测试基于 Stripe 的 Apple Pay? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 目前我正在尝试开发一个本机iOS应用程序 我必须集成基于Stripe的Apple Pay 为此我已在我的项目中添加了他们提供的SDK 在最
  • 在Android上,正在运行的进程和缓存的后台进程有什么区别?

    在Android上 当我查看 设置 gt 应用程序 时 在 运行 选项卡下 我可以看到内存被分成几部分 已用内存 和 空闲内存 应用程序也被放置进入 已用内存 或 空闲内存 无内存 部分中的应用程序被标记为 缓存后台进程 那么 什么是 缓存
  • ReentrantLock.Sync 中当前线程变量的搭载如何工作?

    我在 Java并发实践 第14 6 1节中读到了ReentrantLock的一些实现细节 注释中的一些内容让我感到困惑 因为受保护的状态操作方法具有易失性读取或写入的内存语义 并且 ReentrantLock 非常小心仅在调用 getSta
  • 谷歌表格=间接()在单元格范围上

    我想知道是否有一个标准函数可以循环一系列单元格并对其应用间接函数 我正在尝试构建一个表格来按商店 月份和类别来支付我的费用 但到目前为止它还很难扩展 因为我有一个看起来像的函数 INDIRECT B 3 concat A12 C 1 IND
  • 什么可能导致 PHP 序列化函数失败?

    我有一些服务器端 PHP 代码 尝试将数据对象 本质上是多维数组 保存到后端数据库 该数据对象最初作为从 Flex 应用程序发送的 AMF 动作脚本对象出现 我想保留整个对象以供以后使用 因此我使用了 php 序列化函数并将对象编码为一个可
  • 如何使该 Youtube 视频可点击(css + z-index)?

    我希望 Youtube 视频成为背景壁纸 但我仍然希望它具有交互性 即用户可以通过单击来暂停视频 现在 我已将 iframe 设置为 z index 为 99 由于某种原因 我无法点击它 用Firebug检查后 似乎是这样body覆盖 if
  • 对于内置类型可以使用 C 风格的强制转换吗?

    在这里阅读了很多关于 C 中 C 风格转换的答案后 我仍然有一个小问题 我可以对内置类型使用 C 风格的转换吗 long x long y 或者它仍然被认为是不好和危险的 我可以对 long x long y 等内置类型使用 C 风格转换吗
  • 如何使用带有校验位的 ZPL 创建 GS1-128 条形码

    我需要使用 ZPL 生成 GS1 128 条形码 它需要包含一个校验位 我似乎没有得到校验位 Here is my code BCN 088 Y Y Y D FD 00 00123456000057763 FS The first Y is
  • 在android中的edittext中插入textview?

    我正在尝试在 Edittext 中插入文本视图 如下所示 任何人都可以给我关于如何实现它或其他东西的想法 谢谢 update 编辑文本中的文本视图会动态变化 尝试这个示例代码 它符合你的要求 PopupWindow pw new Popup
  • 从 testNG.xml 文件中检索参数值

    我想打印该值 iphone 5 从钥匙参数名称 webdriver deviceName iPhone 基本上有两种方法可以在测试类中执行此操作 测试类本质上是包含一个或多个 Test 配置方法 Via the ITestContext目的
  • HTTP 基本:访问被拒绝致命:身份验证失败

    我在 Windows 10 Pro x64 上使用 GitLab 社区版 9 1 3 2e4e522 带有 Git 客户端 Error Cloning into project name remote HTTP Basic Access d
  • Firebase 存储允许删除文件

    我对用户发布图像上传有以下规则 但是当前规则不允许删除文件 如何修改规则以允许用户删除他的图片 什么属性request变量表示请求是DELETE match uid posts pid imageName allow read allow
  • Windows/WPF/Silverlight 应用程序中的实体框架 ObjectContext

    我们正在使用实体框架 准确地说是带有 RIA 服务的 Silverlight 编写一个 WPF 应用程序 我们通过应用程序使用共享的 ObjectContext 以便我们可以从跨模块共享数据中受益 问题是 如果用户在工作期间打开历史销售 它
  • 如何使用 C# 将 Html 的图像转换为数据 URI?

    我需要在 HTML 的 Win 应用程序中将图像转换为数据 URL 嵌入图像 并且我需要 图像的数据 URL 嵌入图像 public static string GetDataURL string imgFile return img sr
  • 教义。为什么我在 ManyToMany 上得到 persistCollection 和一个空数组?

    这是我的实体 Productgeneral ORM Table name ProductGeneral indexes ORM Index name category id columns category id ORM Entity cl
  • XCode 工作区完整性 - 无法加载项目 (pods.xcodepoj)

    我从 git 中拉取 一切正常 除了我收到此错误 即使我仍然可以运行该项目 有没有办法来解决这个问题 这通常意味着存在提交到实际的 project pbxproj 文件的合并冲突 由于这是一个 Pods 项目 它是短暂的并且可以随意重新创建
  • 实现 ObservableValue

    我有这个对象 public class Oggetto private int value private boolean valid public Oggetto int value boolean valid this value va
  • NSFetchedResultsController 委托和后台驱动的更新

    我在开发访客管理应用程序时遇到了 NSFetchedResultsController 问题 该应用程序基本上在后台下载来宾列表 使用 NSOperation 子类 将它们插入到托管对象上下文中 然后将它们呈现在 UI 线程上的表视图中 我