2017-02-28 46 views
0

我刚刚发现了Realm。我正在考虑有iOS应用程序,Mac应用程序和后端的架构设计。 iOS应用程序有一个Realm(Realm Mobile Platform),它连接到后端的Realm。 iOS应用程序还有另一个Realm(Realm Mobile Database)。后端有一个存储文件的数据库。我们可以有2个领域?

这是我在想什么。

iOS应用程序从第三方API获取一些JSON,解析它并将其与Realm(连接到后端的一个)中的内容进行比较。那些不在Realm中的东西会被发送到Mac应用程序,Mac应用程序将从外部源下载相应的文件,然后将这些文件上传到数据库。然后,Mac App会提醒iOS应用程序,然后将这些内容放入Realm(连接到后端的Realm)中。这是'更新后端'过程。

现在,iOS应用程序将两个领域比较在一起,并获取不在本地领域中的东西。然后使用这些领域对象中的链接从数据库下载文件。一旦下载完成,它会将这些对象添加到本地的Realm商店。这是'将设备与后端同步'进程。

两个领域都将存储相同类型的对象。

附加:

理想的情况下,设备不必须在与数据库完美同步,因此将最有可能有后端境界和数据库文件的某个子集。

这是一个Realm平台和一个Realm数据库的组合吗?

+0

是否有任何理由让您不只是在iOS应用程序,Mac应用程序和后端之间共享相同的领域? – ast

+0

嘿@ast,是要保留一个三角洲所以它可以知道它没有,所以它知道要下载哪些东西。 –

+0

将属性添加到对象以跟踪文件是否已被下载,然后让Realm处理同步,这是一个想法吗?应该减少很多开销。 – ast

回答

0

是的!这应该是可能的。您可以在应用中拥有任意数量的同步和非同步领域;您只需确保协调您用于实例化它们的对象Configuration

它可以很容易地复制域对象从一个领域到另一个:

let objectFromLocalRealm = //... 
let synchronizedRealm = //... 

try! synchronizedRealm.write { 
    sychronizedRealm.create(*objectType*.self, value: objectFromLocalRealm, update: true) 
} 

如果您虽然使用这种方法,你需要确保两个对象本身,而在List S或以其他方式任何子对象有主键,或者可以在同步的Realm中结束同一对象的多个副本。

领域的相等性测试是检查两个Object实例是否指向数据库中相同的后备行,因此比较来自不同领域的两个对象可能无法自动工作。您可能需要实施手动比较方法来检查某些属性值是否匹配。

+0

谢谢蒂姆!我昨天在YouTube上观看你们的Realm会谈,所以这很有超现实感,从你那里得到回应。队友的欢呼声! –

+0

嘿,彼得!哈哈哈哈真的吗?那是哪个视频?凉!很高兴我可以帮助!祝好运与您的其他应用程序! :) – TiM

+0

谢谢蒂姆:)这是一个:https://www.youtube.com/watch?v=QmoOuS1nXh8很多好笑!真的很棒的介绍。现在我喜欢使用Realm。它是邪恶的。 –

相关问题