【问题标题】:Maintain multiple instances of the Relam维护 Realm 的多个实例
【发布时间】:2016-10-26 05:15:18
【问题描述】:
我正在开发一个 SDK,一个将出售给第三方的静态库。这个静态库将使用 Relam 作为数据存储。
我正在计划这样一种情况,即我的客户在他的应用程序上也有一个使用 Relam 的数据存储。我不希望他们更改/迁移他们的数据存储,因为他们正在合并我的 SDK。
我们可以在使用 Relam 时拥有多个数据存储/实例吗?
或者有没有其他更好的方法来处理这种情况?
【问题讨论】:
标签:
ios
objective-c
cocoa-touch
realm
【解决方案1】:
我将分两部分回答:
第 1 部分 - 代码架构
如果您在内部库中使用 Realm,并且担心您对 Realm 的使用可能会渗入用户的代码(如果他们也在使用 Realm),那么有一些方法可以缓解这种情况。
你是对的,使用RLMRealmConfiguration 可以让你正确地将你的大部分 Realm 实现与他们的分开。您可以使用fileURL 属性明确指定您的Realm 文件将保存在哪里,并使用objectClasses 属性明确定义只有您自己的RLMObject 类将被保存到其中。
这可能需要测试,但反之亦然。 Realm 默认使用 Objective-C 反射添加所有 RLMObject 类。因此,除非用户还在他们的配置中指定objectClasses,否则库的模型对象的模式可能会出现在他们的领域文件中。这将是无害的,但对用户来说可能看起来很奇怪。
第 2 部分 - 分发
在一个静态二进制文件中包含同一框架的 2 个副本并不好。尤其是当可以想象用户可以开始使用比你的库中的新版本的 Realm 时。因此,我绝对建议将 Realm 作为库的动态框架依赖项;因此您的库和用户的代码都可以针对相同的代码库。