【发布时间】:2023-03-19 18:35:01
【问题描述】:
我对人际关系有疑问。我必须 NSManagedObject 类 Team 和 Player。团队可以包含许多玩家。玩家只能包含一个团队。
这是来自两个请求的 JSON:
/团队
{
"id" : 1,
"name" : "Chicago Bulls",
"city" : "Chicago"
},
{
"id" : 2,
"name" : "Detroit Pistons",
"city" : "Detroit"
},
...
/玩家
{
"id" : 1,
"name" : "D.J. Augustin",
"teamId" : 1
},
{
"id" : 2,
"name" : "Carlos Boozer",
"teamId" : 1
},
...
设置 xcdatamodeld 实体
Team Entity
atribute | mappedKeyName |
name | name |
teamID | id |
city | city |
Player Entity
atribute | mappedKeyName |
name | name |
playerID | id |
如您所见,我没有为 Player 实体设置 teamId,因为我们需要使用 relatedByAttribute 键。这里的第一个问题我不知道我需要在 User Info 中为哪个属性、属性或关系设置 relatedByAttribute 键。
编写代码部分
假设我已经获得了由 NSDictionary 表示的团队 JSON。我做什么:
此代码使用 User Info 为 Team 实体的每个属性从 NSDictionary 导入所有数据。这一步一切正常。
Team *team = [Team MR_createEntity];
[team MR_importValuesForKeysWithObject:dictionary];
第二个操作是获取所有玩家并将他们附加到在第一步中已经创建的具体团队,使用您可以在 JSON 中看到的 key teamId。
我在这一步做什么。假设我得到了第一个玩家的 NSDictionary。
这个代码是一样的。
Player *player = [Player MR_createEntity];
[player MR_importValuesForKeysWithObject:dictionary];
但是关系不会起作用,MagicalRecords 不会将我的玩家与具体球队联系起来,因为我没有像我说的那样设置相关的属性键。我真的需要帮助解决这个问题,因为我了解导入的基本概念,但不明白我需要在哪里设置 relatedByAttribute 键,我的意思是针对哪个实体和哪个属性。
我在堆栈溢出时也看到了一些与实体有关的重复问题,我认为这是另一个问题,但如果你能提出一些建议,那就太好了,因为我从头开始,可以使我的代码易于理解和没有其他问题。非常感谢!
我使用的链接:magical import
【问题讨论】:
标签: ios core-data magicalrecord