ios – 两个NSPersistentStoreCoordinator可以使用相同的数据库吗?

ios – 两个NSPersistentStoreCoordinator可以使用相同的数据库吗?,第1张

概述我正在考虑使用两个持久存储协调器,PSC1只会读取一个sqlite DB,PSC2会读取和写入DB.有时PSC1会从DB重新加载内容. 你认为有可能吗? 您是否认为两个PSC可以以原子方式读/写DB,而不是导致任何损坏? PSC是否对DB进行了任何锁定,以便从其他PSC进行访问? 您可以让两个不同的NSPersistentStoreCoordinator实例访问相同的文件.事实上,几年前这是一种推 我正在考虑使用两个持久存储协调器,PSC1只会读取一个sqlite DB,PSC2会读取和写入DB.有时PSC1会从DB重新加载内容.

你认为有可能吗?

您是否认为两个PSC可以以原子方式读/写DB,而不是导致任何损坏?

PSC是否对DB进行了任何锁定,以便从其他PSC进行访问?

解决方法 您可以让两个不同的NSPersistentStoreCoordinator实例访问相同的文件.事实上,几年前这是一种推荐的方法.

但是,这样做存在问题.如果一个NSPersistentStoreCoordinator进行了写入文件系统的更改,则另一个NSPersistentStoreCoordinator实例将不会知道它. NSPersistentStoreCoordinator和NSManagedobjectContext维护它们管理的对象的内存状态.使用两个NSPersistentStoreCoordinator实例会导致它们在某些时候不同步.例如,如果NSPersistentStoreCoordinator A从NSPersistentStore中的记录加载对象,则会有该对象的内存中版本.如果NSPersistentStoreCoordinator B然后删除由相同记录支持的对象,则没有A对象版本的记录.当Core Data试图在A中修改该对象的故障时,您将获得异常.

Do you think two PSC can read / write DB in an atomic way,not not to cause any corruption?

NSsqliteStoreType存储很少出现腐败问题.与其他商店一样,这当然是可能的.

Does PSC put any lock on DB,to precent access from an other PSC?

内置的NSPersistentStore具体类在访问文件系统时记录文件(但并不总是用于元数据).所以,是的,涉及到一个锁,它应该阻止两个NSPersistentStore实例同时修改相同的文件.

如上所述,这不是你应该关注的问题.当使用多个协调器时,协调器的内存状态及其上下文是一个更紧迫的问题.

总结

以上是内存溢出为你收集整理的ios – 两个NSPersistentStoreCoordinator可以使用相同的数据库吗?全部内容,希望文章能够帮你解决ios – 两个NSPersistentStoreCoordinator可以使用相同的数据库吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存