在Core Data中存储关系中不存在的对象数量



我有一些数据需要从服务器(后端)加载。例如,假设我有一个用户和事件的实体。它们之间的关系是多对多的(用户可以参加多个事件,事件可以有多个参与者)。所有数据都远程存储在后端,本地存储在Core data中。当我从后端下载数据时,我将其转换为NSManagedObjects并将其存储在NSManagedObjectContext中。一切都很简单,但是……

当我下载我想知道的事件列表时,该事件有多少与会者。但我不能在同一个请求中下载用户列表,因为这完全是多余的。我需要的是下载,比方说,用户唯一id的列表,这样我就可以有两个东西:与会者的总数和下载具体用户的详细数据的方法(通过唯一id)。或者还有另一个例子:我需要知道与会者的总数并下载有限的一组,因此我可以在CoreData中创建一些实体,但不是所有实体。

所以主要的问题是我应该如何在我的CoreData存储这样的信息?意思是我需要知道对于某些实体有一些关系中的相关实体它们目前并不存在于CoreData中,但我知道应该有多少。我想到的第一件事是在事件实体中有一个类似usersCount的属性,但这似乎有点脏。这种情况下的最佳实践是什么?

如果问题不够清楚,请评论,以便我可以添加更多的细节。

当您下载带有相应用户id列表的事件时,您就可以创建Event对象和相关的User对象,但您只填写"userId"属性。

稍后,当您下载完整的用户信息时,您更新现有的(不完整的)对象或者创建新的用户对象。在"核心数据编程指南"中高效地实现查找或创建描述可能有用的模式。

所以我们的想法是首先使用不完整的信息创建Core Data对象,然后更新对象,稍后提供详细信息。这样做的好处是,你可以立即建立所有的关系,例如,计算相关的用户,即使用户信息

使用一个属性来存储计数并没有什么不好的,特别是如果这些实体是通过单独的请求来检索和分页的。

最新更新