我将Realm for Swift与仅内存配置一起使用。 由于在后台线程中更新数据库,因此每次使用时都会创建一个Realm实例。 在Realm文档中提到了此问题,这里还有另一个问题https://stackoverflow.com/a/45375608/613121。

但是通过测试数据库,我注意到了不可预测的行为。 有时数据库是空的,更新会重新填充数据库而不是更新。 原因可能是该领域在撰写之后被释放了。

解决方案可能是在主线程中保留强引用。 我将Realm配置保存为单例。 单例返回具有相同配置的新Realm进行更新,并强烈引用另一个Realm以防止丢失,这是否安全?

在stackoverflow.com/questions/41002022/中,在主线程上出现单例提示的情况下讨论了此问题。我的解决方法是在某个线程的配置单例中保留强大的参考。所有工作都是通过新的领域完成的。所以我完全不混淆线程-我希望。也许我应该在主线程上创建带有调度的单例。并且仅当调用者来自另一个线程时才创建新的Realm!

虽然我理解这个问题,但用例尚不清楚。在某些情况下,单例模式可能是一个解决方案,但正如David在该回答中所提到的那样,以线程安全的方式使用Realm的最佳方法是使用let realm = try为您的Realm创建新的引用!每次在线程之间移动时,都会使用Realm()。如果遇到意外结果,则问题可能出在其他地方。添加一些说明问题的代码可能会有所帮助。请花点时间回顾一下如何创建最小,完整和可验证的示例

谢谢杰伊。我每次使用新的Realm实例时都遇到了问题。这似乎工作正常。但是在测试数据库时,它是从后台线程写入数据库并逐步通过调试器后为空的。因此,可能必须强烈参考具有相同配置的领域。现在看来可行。

听起来应该不错。 您必须尝试一下,这可能比在这里等待明确的答案要快。

我将编写一个singleton类,作为构造函数的一部分,它定义Realm配置并将其存储,还打开并存储该领域的实例。 然后,我向该类添加一个访问器,以供您的线程使用; 它将使用相同的配置返回领域的新实例。 当那些超出范围(并且您应该允许它们超出范围)时,由于单例实例保持其引用,您的领域将保持不变。

我可能错误地读了您的第一个参考问题,但这与内存领域无关,因此不要求您在某处保留参考。

是的,我尝试过,它似乎可以工作。 希望在随后被销毁的后台线程中写入新的Realm不会造成任何问题。

ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据相关推荐

  1. ios 表情符号 键盘_使用iOS键盘键入时,表情符号在NSAttributedString中不显示,在Android上键入时表示...

    我正在制作一个混合应用程序,当我从 Android端发送表情符号时,它在iOS端显示正常,但iOS方面不能(似乎)显示来自iOS自己键盘的表情符号! 我在显示表情符号的标签使用了属性文本,文本来自HT ...

  2. catia保存成stp文件时部件丢失_电脑硬盘恢复教程,简单复原硬盘丢失数据的做法...

    电脑硬盘恢复教程?大家应该都听过数据恢复的案例,例如一些文件数据被损坏,使用技术手段给修复回来等.电脑的数据恢复也是如此,也是一种技术手段,硬盘数据恢复大家可能都会接触到,因此我们就来看看硬盘数据恢复 ...

  3. mysql ibata文件_重装系统后,怎么调用之前mysql的数据_mysql

    重装系统后,如何调用之前mysql的数据 前提是:必须保留之前的数据库数据 在介绍此方法之前,提醒各位最好的转移数据的方法为: 在原来MYSQL服务器导出SQL文件,然后再在新的MYSQL服务器导入数 ...

  4. ios realm 文件_Realm在iOS上的使用

    [Realm]是由美国YCombinator孵化的创业团队历时几年打造,第一个专门针对移动平台设计的数据库* [Realm]是一个跨平台的移动数据库引擎,目前支持iOS.Android平台,同时支持O ...

  5. 描述文件_【iOS】描述文件删除不了?教你一键移除所有恶意描述文件

    有个大兄弟微信求助,说他在网页上安装了一个这样的第三方的"视频学习软件",但是现在想删除App却发现无法移除描述文件,屏幕长按删除也没法删除软件,很是着急 长按没有删除选项 这种加 ...

  6. ios 图像坐标系_[译] iOS 开源图形库 Core Plot 使用教程

    注意 :本篇教程已被 Attila Hegedüs 更新,可适用于 iOS 9 和 Swift 2.2.原始教程出自教程组成员 Steve Baranski. 如果你曾经想在自己的 app 中引入图表 ...

  7. php ios视频文件上传,iOS实现视频和图片的上传思路

    关于iOS如何实现视频和图片的上传, 我们先理清下思路,然后小编根据思路一步一步给大家详解实现过程. 思路: #1. 如何获取图片? #2. 如何获取视频? #3. 如何把图片存到缓存路径中? #4. ...

  8. ios 图像翻转_在iOS 14中使用计算机视觉的图像差异

    ios 图像翻转 Human eyes are very receptive to visual representations. Similarly, computer vision enables ...

  9. ios 获取固件版本_觉得iOS测试版本BUG太多?系统降级试一试?

    对于那些喜欢折腾手机,尝鲜新功能的小伙伴来说,一但iOS有新的测试版本出来就会更新,但iOS 系统的小更新很是频繁,经常更新难免会出问题,尤其是较大版本间的升级(比如iOS12到iOS13),会让很多 ...

最新文章

  1. 字符串 内存 函数的介绍与模拟实现
  2. 图像处理与计算机视觉:基础,经典以及最近发展(1)序
  3. CRM数据库表COM_TA_R3_ID的数据来源
  4. Nginx的配置实例(反向代理准备工作)
  5. async 异步编程的应用
  6. 国外著名java技术资料网站
  7. kafka整合ldap权限管理
  8. 2020年海南大学计算机调剂,2020年海南大学招收调剂生
  9. navicat mysql 还原_navicat如何给mysql还原数据库
  10. 使用fdisk创建好了分区,但是在生成物理卷出现“Device /dev/sdb2 not found (or ignored by filtering).“解决方法
  11. print( )函数调用——pytnon小练
  12. lammps教程:薄膜渗透过滤模拟--平衡弛豫过程
  13. 配置静态路由和VLAN
  14. qpsk matlab仿真,qpsk的matlab和simulink仿真.pdf
  15. VB.NET创建/修复/压缩/备份/恢复ACCESS数据库
  16. 使用fsck命令检查文件系统错误
  17. C语言 - 计算n的阶乘(n!)
  18. 要数字孪生实现,你只需这款数据可视化大屏软件就够了
  19. 2021年跨境电商行业相关数据
  20. 运维工程师主要做什么_弱电工程IT运维工作到底是做什么的?

热门文章

  1. Java DB嵌入式模式
  2. Java注释和真实世界的Spring示例
  3. 现代化Java代码的七个NetBeans提示
  4. Linux下python包放在哪,在alpinlinux中使用apk安装的Python包
  5. mysql dump gtid_mysqldump命令详解 Part 3- 备份全库
  6. ServletContext的学习笔记(属Servlet学习课程)
  7. MySQL命令之mysqldump的选项详解
  8. vim 底行命令模式下的全局命令 g(global)
  9. java当前4中引用_Java的四种引用
  10. 输入一个正整数求所有素数因子_一起来聊聊素数的两个性质