维护Relam的多个实例

时间:2016-10-26 05:15:18

标签: ios objective-c cocoa-touch realm

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

我正在计划一个场景,我的客户端也有一个使用Relam在他的应用程序上的数据存储。我不希望他们更改/迁移他们的数据存储,因为他们正在整合我的SDK。

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

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

1 个答案:

答案 0 :(得分:2)

我将分两部分回答:

第1部分 - 代码架构

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

你是正确的,使用RLMRealmConfiguration可以让你正确地将你的大多数Realm实现与他们的实现分开。您可以使用fileURL属性明确指示保存Realm文件的位置,并使用objectClasses属性明确定义只保存自己的RLMObject类。

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

第2部分 - 分发

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