我正在开发一个SDK,一个静态库,将出售给第三方。此静态库将使用Relam作为数据存储。
我正在计划一个场景,我的客户端也有一个使用Relam在他的应用程序上的数据存储。我不希望他们更改/迁移他们的数据存储,因为他们正在整合我的SDK。
使用Relam时我们可以拥有多个数据存储/实例吗?
或者还有其他更好的方法来处理这种情况吗?
答案 0 :(得分:2)
我将分两部分回答:
第1部分 - 代码架构
如果您在库中内部使用Realm,并且您担心如果他们也使用Realm,您对Realm的使用可能会渗透到用户的代码中,那么有一些方法可以缓解这种情况。
你是正确的,使用RLMRealmConfiguration
可以让你正确地将你的大多数Realm实现与他们的实现分开。您可以使用fileURL
属性明确指示保存Realm文件的位置,并使用objectClasses
属性明确定义只保存自己的RLMObject
类。
这可能需要测试,但反之亦然。 Realm使用Objective-C反射默认添加所有RLMObject
类。因此,除非用户还在其配置中指定objectClasses
,否则库的模型对象的架构可能会出现在其Realm文件中。这将是无害的,但对用户来说可能看起来很奇怪。
第2部分 - 分发
在一个静态二进制文件中拥有2个相同框架的副本并不好。特别是当可以想象用户可以开始使用较新版本的Realm而不是库中的版本时。因此,我绝对建议将Realm作为库的动态框架依赖项;因此,您的库和用户代码都可以定位相同的代码库。