2017-04-14 75 views
5

我正在使用内部使用Realm的封闭源Swift框架。在测试这个框架的过程中,我在也使用Realm的iOS应用程序中使用了框架。在Swift框架中使用领域创造主机iOS应用也使用领域的挑战

当框架创建它自己的境界,它使用特定的框架Realm.Configuration。主机应用程序使用默认的Realm配置创建Realm对象。领域是'独立的'。

有几个问题:

  1. 当主机应用程序创建一个域参考,底层数据库与所有可在框架内的私人领域对象类表结束。这将我们框架内部的一些知识暴露给任何使用我们的框架并创建他们自己的领域的人。
  2. 因为所有表都在所有领域创建,所以在需要迁移时会出现问题。在我们的框架中,我们可以提供迁移来运行,但是当主机应用程序创建它的Realm,并更新框架内部类时,主机应用程序不会迁移,应用程序会因迁移错误而崩溃。

有没有办法给一个应用程序中使用两个完全独立的国度?

我可能能够使用RealmConfiguation的对象类型选项时指定的班级名单框架领域,但这需要我们的框架做同样的任何用户。这看起来不合理,并且仍然允许1.以上是一个问题。

回答

1

是的,有可能独立地具有两个独立的库/框架/在应用中使用的代码库境界,并保持他们的模型对象完全分开的。

如果你有境界Object子类的集合,你想保密的,你可以标记他们,因此他们将不会自动加入下面的静态方法重写添加到应用程序的默认模式:

public class MyModel: Object { 
    public override class func shouldIncludeInDefaultSchema() -> Bool { 
     return false 
    } 
} 

如果该类在该Realm的Configuration对象的objectTypes属性中明确声明,则该类只会被添加到Realm数据库中。

这种方式,您可以隔离所有你自己的领域模型类,只是你自己的框架,和父应用程序可以在原有范围内使用领域没有任何物体混错。

+0

工作。谢谢! – asutula

+0

非常好!别客气!谢谢你让我知道! :) – TiM