如何在RealmSwift中创建关系?

时间:2017-03-15 12:25:42

标签: ios swift realm

我在非关系数据库架构方面经验不足。我的用例如下。

我有一个约会和Customer Realm对象模型。

预约属性是 idrelatedCustomer(客户模型)。 客户属性为idname

我从服务器获取约会列表,它将在Realm表中添加relatedCustomer作为约会对象的关系。

稍后,我从另一个API调用中获取客户列表,它将向Customer Realm表中添加更多客户。从服务器获取客户列表数据之后,在创建客户域对象之前,我清除所有以前保存的客户对象,以确保没有孤立客户对象(在服务器中删除但在我的域缓存中可用的客户)用户界面。此批量删除删除了我的相关客户的约会。

我该如何处理?

1 个答案:

答案 0 :(得分:2)

不幸的是,这是一个在Realm中不直接的用例。

我建议(如果您还没有这样做),您可以在您的客户模型上id(我将其称为Customer)为该模型的primary key property。< / p>

一旦你这样做,这是一个可能的解决方案。

当您从服务器获取客户列表时,我假设您将获得一个JSON,XML,Swift词典或类似的数据结构,其中包含客户列表。从该客户列表中,创建一个Swift Set id个字符串,每个客户一个。

然后使用Realm的{​​{1}} API获取您域中所有objects()个对象的列表。然后,您可以使用Swift的Customer方法将现有客户列表转换为map()Set字符串。

现在你有两套,你可以使用id上的subtracting()方法获取你需要移除的所有Set的列表({1}对于您的Realm中的客户,而不是您的服务器数据中的客户)。然后,您可以从领域中删除这些对象。

最后,您可以使用id的{​​{1}}方法添加所有新客户,并更新现有用户。

您可能还想调查是否可以更改您的服务器API,以便为您提供相对于上次查询时提供的列表的删除用户列表。