维护 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 的多个实例的主要内容,如果未能解决你的问题,请参考以下文章
Paypal Node SDK payment.execute http req - 在弹性负载平衡上使用多个 ec2 实例维护状态。描述?