0

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

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

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

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

4

2 回答 2

1

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

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

所以想法是首先创建具有不完整信息的 Core Data 对象,然后更新具有详细信息的对象。优点是您可以立即建立所有关系,例如,即使用户信息不完整,也可以计算相关用户。

于 2013-04-12T11:16:32.877 回答
1

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

于 2013-04-12T11:27:55.947 回答