• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - JSOG API 对象的 RestKit 映射

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:20:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我试图弄清楚如何使用 RestKitAPI 响应映射到 CoreData 对象。 . API 使用 JSOG标准。这是一个例子:

[
    {
        "@id": "1",
        "name": "Sally",
        "friend": {
            "@id": "2",
            "name": "Bob",
            "friend": {
                "@id": "3",
                "name": "Fred",
                "friend": { "@ref": "1" }
            }
        }
    },
    { "@ref": "2" },
    { "@ref": "3" }
]

如何为这样的 JSON 创建 RKEntityMapping?简单属性的映射是微不足道的,问题是如何在此处设置关系以便它们与 @ref 一起工作,而且当顶级用户对象仅包含 @ref 时.

RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName"Question"
                                                   inManagedObjectStore:[RKObjectManager sharedManager].managedObjectStore];

[userMapping addAttributeMappingsFromDictionary
 {
     @"@id" : @"identifier",
     @"name" : @"name"
 }];

[userMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath"friend"
                                                                            toKeyPath"friend"
                                                                          withMapping:userMapping]];

我的猜测是我可以使用下面的代码来处理对象内部的 @ref:

[userMapping addConnectionForRelationship"friend" connectedBy{@"@ref": @"@id"}];

但它是正确的吗?

  1. 如何将完整对象或仅对已提供对象的引用(通过 @ref)映射到实际的 Core Data 对象?
  2. 如何将 JSON 的顶级元素(作为 User 对象列表)映射到 User 实体的实际列表?



Best Answer-推荐答案


使用映射本身添加关系,因此它会递归钻取。对 ref 使用外键映射。


在您发表评论后再次查看此内容,它实际上可能是动态映射而不是外键的良好候选者。这意味着创建一个新的映射,它只使用 @"@ref": @"identifier" 进行连接和一个动态映射,它查看键并决定是使用这个连接映射还是完整的userMapping.

请注意,这两个映射都需要指定 identifier 是对象的唯一键,您应该使用内存缓存来允许找到现有对象,而不是创建重复项。

关于ios - JSOG API 对象的 RestKit 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912268/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap