如何在复杂的核心数据模型中有效访问数据

EAB

我的Xcode项目中有一个非常复杂的Core Data模型。为简单起见,我在这里只说我的模型包括与团队有多对多关系的游戏,而每个团队都与玩家有多对关系。这三个实体都具有自己的属性(例如gameLocation,teamScore,playerNumber等)。

由于Restkit向Ruby on Rails构建的网站提出了大量的GET请求,因此我的数据库已完全填充。所以现在,我想开始使用此数据-显示和修改它。我知道这涉及提取请求和谓词,但是我不知道何时何地需要执行这些提取。我可以获取一个游戏,然后从该游戏中访问与该游戏相关的所有内容吗?例如,这是我的代码,用于提取今天计划的所有游戏:

NSFetchRequest *request = [[NSFetchRequest alloc] init];

NSEntityDescription *desc = [NSEntityDescription entityForName:@"Game" inManagedObjectContext:self.managedObjectContext];
[request setEntity:desc];

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"time" ascending:YES];
[request setSortDescriptors:@[sort]];

/*** some code that determines the values for variables 'todaysDate' and 'tomorrowsDate' ***/

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(date >= %@) AND (date < %@)", todaysDate, tomorrowsDate];
[request setPredicate:predicate];

NSError *error = nil;
self.games = [self.managedObjectContext executeFetchRequest:request error:&error];

但是现在呢?访问这些游戏团队的最佳方法是什么?我需要更多的提取请求还是效率低下?我尝试了类似的方法,但似乎不正确

Game *game1 = [self.games objectAtIndex:0];
NSMutableSet *game1Teams = [game1 mutableSetValueForKey:@"gameTeams"];

不仅是团队,我如何获得那些游戏团队的分数?那些游戏的玩家?等等...

(也许对本教程的引用或一些示例代码对我来说是个好地方,因为我敢肯定这是微不足道的东西)

正则表达式

关键短语是这样的:

“我可以获取一个游戏,然后从该游戏中访问与该游戏相关的所有内容吗?”

答案是“是”。

通过简单地引用指向实体中定义的集合(或其他任何东西)的指针,就可以基于单个获取请求遍历整个“树”,并允许Core Data在需要加载各种实体时进行处理。

首先,这对我来说没有任何意义,但是当我退出战斗时,发现它比我想象的要容易得多。

这是我的一个项目:

@property (nonatomic, retain) NSString * goalName;
@property (nonatomic, retain) NSData * goalPicture;
@property (nonatomic, retain) NSNumber * indexOrder;
@property (nonatomic, retain) NSNumber * wordPicture;
@property (nonatomic, retain) NSSet *item;
@property (nonatomic, retain) User *user;
@property (nonatomic, retain) NSSet *video;

在我的情况下,用户是树中的顶级节点,每个目标下可以有多个项目,也可以有多个视频。

完成对给定用户的获取请求后,便可以使用用户实体中的NSSet来访问该用户的目标。因此,我得到了以下目标:

NSSet *goals = userObj.goal;
Goal *g = [goals anyObject]; // for example.

然后,如果我要让项目“包含”在给定的目标内:

NSSet *items = g.items;
Item *i = [items anyObject];

等等。重要的是核心数据将有效地加载实体。如果您将10,000个项目附加到特定目标,则不必担心这些项目在实际需要之前会被获取...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数据如何存储在核心数据模型中(属性)

来自分类Dev

数据如何存储在核心数据模型中(属性)

来自分类Dev

核心数据模型-关系

来自分类Dev

swiftUI核心数据模型

来自分类Dev

核心数据模型规划

来自分类Dev

Xcode核心数据模型缺失

来自分类Dev

如何在核心数据模型iOS中找出特定属性索引的值

来自分类Dev

核心数据数据模型中的订单实体

来自分类Dev

无需迁移的核心数据更改数据模型

来自分类Dev

范围查询的有效数据模型

来自分类Dev

如何在Java中有效访问半稀疏数据?

来自分类Dev

重置核心数据模型中的所有已保存数据

来自分类Dev

尝试访问核心数据模型的 NSNumber 属性给出 EXC_BAD_ACCESS

来自分类Dev

如何为使用数据模型创建的核心数据类添加属性?

来自分类Dev

基于图像的核心数据模型关系是否正确?

来自分类Dev

考核iOS应用的核心数据模型

来自分类Dev

无法识别Xcode 11.4.1核心数据模型

来自分类Dev

基于图像的核心数据模型关系是否正确?

来自分类Dev

应用程序的旧版本如何应对较新的核心数据模型?

来自分类Dev

核心数据模型设计:使用单个复杂实体还是在其他实体中分组同类属性?

来自分类Dev

如何在Python中有效地循环访问三个不同的数据集合?

来自分类Dev

如何在 Python 中有效地搜索和访问数据帧中的某些单元格?

来自分类Dev

从核心数据中删除多余数据的有效方法

来自分类Dev

如何打开保存在我的笔记本中的数据(使用核心数据模型保存)

来自分类Dev

核心数据,我如何才能有效地查找和删除托管对象

来自分类Dev

将iOS应用程序过渡到全新的核心数据数据模型

来自分类Dev

核心数据问题:更新数据模型时无法识别的选择器

来自分类Dev

对于与核心数据模型相关的SQLite数据库的正确位置感到困惑

来自分类Dev

针对多对多关系方案选择有效的数据模型Azure Cosmos Db

Related 相关文章

  1. 1

    数据如何存储在核心数据模型中(属性)

  2. 2

    数据如何存储在核心数据模型中(属性)

  3. 3

    核心数据模型-关系

  4. 4

    swiftUI核心数据模型

  5. 5

    核心数据模型规划

  6. 6

    Xcode核心数据模型缺失

  7. 7

    如何在核心数据模型iOS中找出特定属性索引的值

  8. 8

    核心数据数据模型中的订单实体

  9. 9

    无需迁移的核心数据更改数据模型

  10. 10

    范围查询的有效数据模型

  11. 11

    如何在Java中有效访问半稀疏数据?

  12. 12

    重置核心数据模型中的所有已保存数据

  13. 13

    尝试访问核心数据模型的 NSNumber 属性给出 EXC_BAD_ACCESS

  14. 14

    如何为使用数据模型创建的核心数据类添加属性?

  15. 15

    基于图像的核心数据模型关系是否正确?

  16. 16

    考核iOS应用的核心数据模型

  17. 17

    无法识别Xcode 11.4.1核心数据模型

  18. 18

    基于图像的核心数据模型关系是否正确?

  19. 19

    应用程序的旧版本如何应对较新的核心数据模型?

  20. 20

    核心数据模型设计:使用单个复杂实体还是在其他实体中分组同类属性?

  21. 21

    如何在Python中有效地循环访问三个不同的数据集合?

  22. 22

    如何在 Python 中有效地搜索和访问数据帧中的某些单元格?

  23. 23

    从核心数据中删除多余数据的有效方法

  24. 24

    如何打开保存在我的笔记本中的数据(使用核心数据模型保存)

  25. 25

    核心数据,我如何才能有效地查找和删除托管对象

  26. 26

    将iOS应用程序过渡到全新的核心数据数据模型

  27. 27

    核心数据问题:更新数据模型时无法识别的选择器

  28. 28

    对于与核心数据模型相关的SQLite数据库的正确位置感到困惑

  29. 29

    针对多对多关系方案选择有效的数据模型Azure Cosmos Db

热门标签

归档