使用 CoreData 在 iPhone 上导入大型数据集

2023-11-21

我面临着非常烦人的问题。我的 iPhone 应用程序正在从网络服务器加载数据。数据以 plist 形式发送,解析时需要使用 Core Data 将其存储到 SQLite 数据库。

问题是,在某些情况下,这些数据集太大(5000 多条记录),导入时间太长。更重要的是,当 iPhone 尝试暂停屏幕时,Watchdog 会终止该应用程序,因为它仍在处理导入并且在 5 秒内没有响应,因此导入永远不会完成。

我根据“高效导入数据”一文使用了所有推荐的技术http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CoreData/Articles/cdImporting.html和其他有关此的文档,但它仍然非常慢。

我正在寻找的解决方案是让应用程序挂起,但让导入在后面运行(更好的一个),或者完全阻止尝试挂起应用程序。或者有更好的想法也欢迎。

非常感谢任何有关如何克服这些问题的提示! 谢谢


您可能希望发送可供使用的 sqlite 文件,而不是将 plist 文件推送到手机。这有很多优点:

  1. 无需在手机上导入
  2. 更紧凑

如果您总是替换整个内容,只需覆盖设备中的持久存储即可。否则,您可能需要将已下载的所有 SQLite 维护为 plist 数组,然后使用它来将所有存储添加到 persistenceStoreCoordinator。

底线:使用几个预编译的 sqlite 文件并将它们添加到 persistenceStoreCoordinator 中。

您可以使用 iPhone 模拟器创建这些 CoreData-SQLite-Stores 或使用独立的 Mac 应用程序。您需要自己编写这两个内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 CoreData 在 iPhone 上导入大型数据集 的相关文章

随机推荐

  • 如何在 Java 15 及以后版本中继续使用 Javascript

    在我的 Java 应用程序中 一个重要的小功能是能够根据音频文件的元数据 例如专辑 艺术家 标题 重命名音频文件 并且使用指定掩码JavaScript 这使得重命名功能非常灵活和强大 我知道 Javascript 已被弃用 但现在看来它实际
  • 适用于德尔福 2006/德尔福 2007/德尔福 2009 的 FitNesse

    是否有适用于 Delphi 2006 2007 2009 的 FitNesse 版本 如果是的话我在哪里可以找到它 还有其他类似 FitNesse 的程序可以在 Delphi 2006 上运行吗 Fitnesse 支持 Delphi 请参阅
  • eclipse 产品调用导致 java.lang.RuntimeException: 未找到应用程序 id

    我刚刚导出了一个产品 如果我点击 启动 Eclipse 应用程序 按钮 该产品就可以正常工作 如果尝试执行导出的产品 我会在启动时收到以下异常 SESSION 2012 03 16 17 28 21 206 eclipse buildId
  • 无法在 Linux 中复制名称中包含“$”的文件

    在我的 Linux 目录中 有一个名为TopSample Config class 每当我尝试将此文件复制到另一个位置 目录时 它都不允许我这样做 我这样做 cp TopSample Config class home praveen co
  • Freeradius 和 PHP 身份验证脚本

    我正在尝试根据 PHP 脚本对 freeradius 用户进行身份验证 但没有成功 我已经尝试了几个小时来配置这个权利 而我在谷歌上找到的所有线程要么是死链接 要么是过时的 半径配置文件 prefix usr exec prefix usr
  • 使用 netcat 逐行发送文本文件

    我正在尝试使用以下命令逐行发送文件 nc host port lt textfile cat textfile nc host port 我尝试过tail and head 但结果相同 整个文件作为唯一的行发送 服务器正在使用特定的守护进程
  • 将 SSL 证书附加到 Terraform 中的 Azure 应用程序网关

    我尝试使用 Terraform 自动部署应用程序网关已经花了很长时间 但它只是失败并显示错误消息 我已确保所有协议设置为 HTTPS 不过 我怀疑 PFX 证书有问题 是不是我没有提供身份验证证书导致失败 在网上尝试了很多方法来获得解决方案
  • 什么时候放弃 MVVM 才有意义?

    当我学习 WPF 时 我一直专注于仅应用MVVM模式到应用程序 但是 我注意到对于某些功能比如验证 很难或不可能保持 MVVM 模型的真实性 很多时候只是简单地粘贴x Name在一个元素上并改变它代码隐藏事件处理程序立即解决问题 你有什么现
  • 我该如何用扫描仪(java)处理它?

    我有一个关于扫描仪的问题 我在一家小公司工作 我们有一个软件 它生成一个大文本文件 我们必须从中得到一些有用的信息 我想用java编写一个简单的应用程序以节省时间 你能指导一下吗 例如我想要这个输出 Output 射频识别 25 蓝色 56
  • Angular JS (angular-ui-tree) ng-click 冲突与拖动开始事件

    我目前正在使用角度 ui 树图书馆和我试图实现以下行为 当用户单击 可拖动节点 时 它会触发 ng click 功能 如果用户单击并开始拖动 ng click 会被忽略 并开始常规的拖放操作 我有以下 html 结构 div div div
  • 为什么 #!/usr/bin/env ruby​​ 在 crontab 中不起作用?

    我已经通过 rvm 系统范围 安装了 ruby 并通过普通控制台正常工作 并且我的 Rails 程序在两者上都运行正常rails runner and apache2 passenger 现在在 crontab 中 我调用了rails ru
  • 由于 LogCollectManager.getUserType() 错误,无法启动 Android 应用程序

    当我尝试在华为 P9 上运行我的应用程序时 出现错误 尝试调用虚拟方法 int com huawei lcagent client LogCollectManager getUserType 为空 对象引用 有没有办法调试这个 因为应用程序
  • javascript 纬度经度到地球上的 xyz 位置 (thirdjs)

    我正在玩 Three js 我想在更大的球体上的特定坐标上渲染对象 我非常接近解决方案 但我没有从 lat lon 获得正确的 xyz 位置 我在jsfiddle上设置了一个测试用例 有两个坐标 latlons 40 7142700 74
  • 如何根据 Git 分支的名称为其着色?

    我的本地 git 存储库中有许多分支 并且我保留了特定的命名约定 这有助于我区分最近使用的分支和旧分支 或者区分与 master 合并的分支和未合并的分支 有没有办法在输出中为分支名称着色git branch根据一些基于正则表达式的规则而不
  • 如何调试 .BAT 脚本?

    有没有办法单步执行 bat 脚本 问题是 我有一个构建脚本 它调用很多其他脚本 我想看看它们的调用顺序是什么 这样我就可以知道我到底应该去哪里并添加我的修改 我不知道如何逐步执行 bat 文件 但您可以使用echo and pause帮助调
  • 定义在 Swift 中被视为类的结构

    在斯威夫特String结构也被视为类对象 就像使用NSCoder encodeObject forKey 方法 我确实知道String直接与 Objective C 类桥接 NSString 但是有没有办法定制struct其行为类似 也许将
  • REST 应用程序的 RequestBody

    我对 SpringMVC REST 概念有点陌生 需要专家的帮助来理解 解决以下问题 我开发了一个 SpringMVC 应用程序 以下是控制器类代码的一部分 它按原样工作得很好 这意味着它可以与 JSON 类型对象一起工作 RequestM
  • docker-compose 上的 WordPress 无法运行

    这是我的 docker compose yml version 2 services wordpress image wordpress ports 8080 80 environment WORDPRESS DB PASSWORD exa
  • Python Scrapy - 从 mysql 填充 start_urls

    我正在尝试使用 MYSQL 表中的 SELECT 来填充 start url蜘蛛 py 当我运行 scrapy runningpider Spider py 时 我没有得到任何输出 只是它完成时没有错误 我已经在 python 脚本中测试了
  • 使用 CoreData 在 iPhone 上导入大型数据集

    我面临着非常烦人的问题 我的 iPhone 应用程序正在从网络服务器加载数据 数据以 plist 形式发送 解析时需要使用 Core Data 将其存储到 SQLite 数据库 问题是 在某些情况下 这些数据集太大 5000 多条记录 导入