gpt4 book ai didi

ios - 两个 NSPersistentStoreCoordinator 可以使用同一个数据库吗?

转载 作者:可可西里 更新时间:2023-11-01 05:33:43 26 4
gpt4 key购买 nike

我正在考虑使用两个 persistent store coordinatorPSC1仅读取 一个 sqlite DBPSC2读取和写入 DB。有时 PSC1 会从 DB重新加载内容

你觉得可能吗?

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

PSC 是否对数据库进行任何锁定,以防止来自其他 PSC 的访问?

最佳答案

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

但是,这样做存在一些问题。如果一个 NSPersistentStoreCoordinator 进行了写入文件系统的更改,另一个 NSPersistentStoreCoordinator 实例将不会意识到这一点。 NSPersistentStoreCoordinatorNSManagedObjectContext 维护它们管理的对象的内存状态。使用两个 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 可以使用同一个数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29986857/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com