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

时间:2013-04-12 10:43:15

标签: ios objective-c core-data

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

当我下载我想知道的事件列表时,此事件有多少与会者。但是我无法在同一个请求中下载用户列表,因为它完全有点过分。我需要的是下载一个用户唯一ID列表,以便我可以有两件事:与会者总数和下载具体用户详细数据的方法(通过唯一ID)。或者还有另一个例子:我需要知道参与者的总数并下载一组有限的参与者,因此我可以在CoreData中创建一些实体,但不是全部。

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

如果问题不够明确,请发表评论,以便我可以添加更多细节。

2 个答案:

答案 0 :(得分:1)

当您下载包含相应用户ID列表的事件时,您可以创建 Event对象以及相关的User对象,但您只填写“userId” 用户对象中的属性。

稍后,当您下载完整的用户信息时,您将更新现有(不完整)对象 或创建新的用户对象。 “核心数据编程指南”中的Implementing Find-or-Create Efficiently 描述了一种可能有用的模式。

因此,我们的想法是首先使用不完整的信息创建Core Data对象并更新 稍后详细信息的对象。优点是您可以立即设置所有关系,例如即使用户信息,计数相关用户仍然有效 还不完整。

答案 1 :(得分:1)

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