ios - RestKit 外键连接到多和一对一

标签 ios restkit foreign-key-relationship

我的目标是用RestKit实现一对多和多对一的关系连接。我使用的是 0.20pre6 版本。 本页http://restkit.org/api/0.20.0/Classes/RKConnectionDescription.html#overview报告一半的例子。 第一个例子是多对一的。 JSON:

{ "project": 
    { "id": 12345, 
      "name": "My Project",
      "userID": 1
    }
}

代码:

NSEntityDescription *projectEntity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:managedObjectContext];
NSRelationshipDescription *userRelationship = [projectEntity relationshipsByName][@"user"];
RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:userRelationship attributes:@{ @"userID": @"userID" }];

我在第一次尝试时错过的是 userID 也需要在实体中。否则它不会工作。我真的不明白为什么......无论如何它有效。

我的问题与第二个例子有关,它是一对多的。 JSON 示例:

 { "project":
    {   "id": 12345,
        "name": "My Project",
        "userID": 1,
        "teamMemberIDs": [1, 2, 3, 4]
    }
 }

代码:

 NSEntityDescription *projectEntity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:managedObjectContext];
 NSRelationshipDescription *teamMembers = [projectEntity relationshipsByName][@"teamMembers"]; // To many relationship for the `User` entity
 RKConnectionDescription *connection = [[RKConnectionDescription alloc] initWithRelationship:teamMembers attributes:@{ @"teamMemberIDs": @"userID" }];

现在... teamMemberIDs 需要在实体定义中,就像前面示例中的 userID 一样。这是我的问题:

  1. 我该如何定义 teamMemberIDs,因为它是一组值?
  2. 有关于这方面的工作示例吗? RestKit 库中的示例目录仅显示嵌套关系。
  3. 我做得对吗?我错过了什么大事吗?

最佳答案

我一直在努力解决这个完全相同的问题,但最终找到了解决方案。希望这对您有所帮助。

使用示例:

  1. 你必须有项目的 NSArray 属性,你的 NSManagedObject, 您可以将 teamMemberID 映射到的位置。为此,您需要创建一个可转换属性。
  2. 将 teamMemberIDs 映射到该属性,就像您映射原始对象一样。
  3. 像示例中那样创建一个 connectionDescription。

关于ios - RestKit 外键连接到多和一对一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14520531/

相关文章:

ios - Xcode 错误 - 库未加载 :/usr/local/opt/icu4c/lib/libicui18n. 58.dylib 错误 134

ios - 我如何设法在 UITableView 部分上方的 Storyboard 中添加 UINavigationBar?

ios - 使用 RestKIt 在核心数据实体中映射 json 对象

objective-c - 如何打印 Restkit 发送的正文(IOS)

ios - RestKit多对多映射,怎么做?

ms-access - MS Access 中的一对一关系

android - 为什么 iOS 模拟器比 Android 快得多?

android - 如何在 Flutter SDK 中使用 OpenCV?

java - 如何在数据库列中存储多个项目?

两列上的 MySQL 外键 : integer AND string