没有根 Json 元素的响应描述符

Response descriptor without root Json element

{
    "id": 76,
    "name": "Tom Timberley",
    "gender": 1,
    "follower_count": 1,
    "following_count": 1,
    "me_following": [{
        "id": 5,
        "status": "ACCEPTED",
        "following_me": {
            "id": 2,
            "status": "ACCEPTED"
        }
    }]
}

没有外部 Json 对象。当我执行 RKRelationshipMapping?

时,有什么方法可以从对象 following_me 访问根对象

我有 tables Following_meUser,我想将用户数据 Json 的根映射到 Following_me

[following_me_mapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"@root" toKeyPath:@"user" withMapping:userMapping]];

这里following_me_mappingFollowing_metable的映射,userMappingUsertable.[=24=的映射]

但指定 @root 无效。

[RKResponseDescriptor responseDescriptorWithMapping:mapping
                                             method:RKRequestMethodGET
                                        pathPattern:nil
                                            keyPath:nil
                                    statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)
 ];

这就是我添加响应描述符的方式。

也许你可以使用 "MJExtension.Framework" 作为 "json to model" 数据(https://github.com/CoderMJLee/MJExtension),将这些数据显示到模型上而不是 json 数据(字典)可以简化你问题,祝好!~~

yes you can save the array of dictionary.allkeys, then put it in the for loop.


let arrayOFKeys = dictionary.allKeys
for(int i=0;i<arrayOFKeys.count;i++)
{
 dictionary.valueforKey(arrayOFKeys.objectAtIndex[i]) // here you will get value and key(root) as well
//key = arrayOFKeys.objectAtIndex[i]
//value = dictionary.valueforKey(arrayOFKeys.objectAtIndex[i])

}

您似乎在倒退地思考问题,并且对您的响应描述符正在处理的内容感到困惑。

通过设置 pathPattern:nil keyPath:nil,您的响应描述符将对您发出的任何请求处于活动状态(它不会按路径模式过滤),并将处理来自根的 JSON 有效载荷(没有要导航到的关键路径)。

因此,您的初始映射应该已经处理了根。然后为 me_following 键添加一个关系来处理该内容。在该映射中,您为 following_me.

添加关系

通过这种方式,您可以在进行过程中向下钻取数据映射,而不是描述您想要开始钻取然后尝试再次导航回来(这需要一个相当不同的和更多的复杂的方法)。