Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS核心数据“;加入;两个“;表格「;_Ios_Core Data - Fatal编程技术网

iOS核心数据“;加入;两个“;表格「;

iOS核心数据“;加入;两个“;表格「;,ios,core-data,Ios,Core Data,我必须在核心数据中添加实体: 游戏和玩家 游戏-如下所示(简化): 板 用户ID 球员 用户ID 名字 球员是独一无二的 我需要选择游戏并将PLAYERS.name列添加到此结果 我已经设置了所有核心数据和关系,可以从“表”中进行选择,并将其放入数组和表视图中 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entity

我必须在核心数据中添加实体:

游戏和玩家

游戏-如下所示(简化): 板 用户ID

球员 用户ID 名字

球员是独一无二的

我需要选择游戏并将PLAYERS.name列添加到此结果

我已经设置了所有核心数据和关系,可以从“表”中进行选择,并将其放入数组和表视图中

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"GAMES" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
GamesARRAY =[context executeFetchRequest:fetchRequest error:&error];
等等


但我如何选择或访问players表中的数据?我知道所有的基础知识和理论,但我真的需要代码示例。不仅仅是像这样的回答:使用NSSet或诸如此类..

CoreData不是数据库

让我再说一遍

CoreData不是一个数据库。 不要把它当作一个

CoreData是一个对象关系图管理和持久化框架

如果您想访问给定游戏中的玩家,为什么在两个实体中都使用
userid
字段?您应该只使用CoreData关系。这样,你甚至不必考虑它,你只需访问游戏中的关系属性,就可以取回你的玩家,反之亦然


还应重命名实体。游戏和玩家作为表名可能有意义,但您不希望在代码中有一个代表一个游戏的
GAMES*
对象。为什么不直接给他们命名
Game
Player

你在
GAMES
上真的有一个了解
玩家的关系吗?如果是这样,对于任何
GAMES
对象,您可以遍历该关系(
game.player
)以获取游戏的player对象的属性。我们在核心数据中不做这样的连接;核心数据使用关系来抽象外键和连接之类的东西(即使这些都是在SQLite后端后台完成的)

此外,正如Kevin所指出的,
游戏
玩家
打破了核心数据实体的合理命名约定<代码>游戏
玩家
要好得多

[[game valueForKey:@"player"] valueForKey:@"name"]
或者,如果您已经设置了相关的类

game.player.name

我知道这不是一个数据库。这就是为什么我写了“连接”和“表”(引用语)。@Romo:你仍然认为它像一个数据库。别那么做。只需在两个实体之间建立一个关系,并通过代码中的属性访问该关系。是的,我确实知道所有的理论。我就是做不到?不过还是要谢谢你。@Romo:你试过什么了?丢弃
userid
字段。只需在.xcdatamodel编辑器中建立两个实体之间的关系。假设它是一对多关系,游戏将有一个属性,当被访问时,返回一个玩家,而玩家将有一个属性,当被访问时,返回游戏的
NSSet
。让我问另外一个问题:在我的游戏中,有-我如何访问Player.name值?我可以访问游戏和关系属性(或它的名称?)中的所有值,但不能访问“名称”本身。。。