维护 Realm 的多个实例

Posted

技术标签:

【中文标题】维护 Realm 的多个实例【英文标题】:Maintain multiple instances of the Relam 【发布时间】:2016-10-26 05:15:18 【问题描述】:

我正在开发一个 SDK,一个将出售给第三方的静态库。这个静态库将使用 Relam 作为数据存储。

我正在计划这样一种情况,即我的客户在他的应用程序上也有一个使用 Relam 的数据存储。我不希望他们更改/迁移他们的数据存储,因为他们正在合并我的 SDK。

我们可以在使用 Relam 时拥有多个数据存储/实例吗?

或者有没有其他更好的方法来处理这种情况?

【问题讨论】:

正在阅读 Relam 文档,realm.io/docs/objc/latest/#realm-configuration。有一个单独的配置会解决这个问题吗? 【参考方案1】:

我将分两部分回答:

第 1 部分 - 代码架构

如果您在内部库中使用 Realm,并且担心您对 Realm 的使用可能会渗入用户的代码(如果他们也在使用 Realm),那么有一些方法可以缓解这种情况。

你是对的,使用RLMRealmConfiguration 可以让你正确地将你的大部分 Realm 实现与他们的分开。您可以使用fileURL 属性明确指定您的Realm 文件将保存在哪里,并使用objectClasses 属性明确定义只有您自己的RLMObject 类将被保存到其中。

这可能需要测试,但反之亦然。 Realm 默认使用 Objective-C 反射添加所有 RLMObject 类。因此,除非用户还在他们的配置中指定objectClasses,否则库的模型对象的模式可能会出现在他们的领域文件中。这将是无害的,但对用户来说可能看起来很奇怪。

第 2 部分 - 分发

在一个静态二进制文件中包含同一框架的 2 个副本并不好。尤其是当可以想象用户可以开始使用比你的库中的新版本的 Realm 时。因此,我绝对建议将 Realm 作为库的动态框架依赖项;因此您的库和用户的代码都可以针对相同的代码库。

【讨论】:

以上是关于维护 Realm 的多个实例的主要内容,如果未能解决你的问题,请参考以下文章

硒;如何运行多个实例并维护不同的会话

如何在多个 Amazon 实例上实现自定义维护页面?

Realm实例操作调用close方法

Paypal Node SDK payment.execute http req - 在弹性负载平衡上使用多个 ec2 实例维护状态。描述?

oracle数据库多个实例有啥用

Mac 应用程序包能够启动多个实例