结构化 objects 中存在 RestKit 键

RestKit key existence in stractured objects

大家好,

我想用 RestKit 映射从我的服务器中提取的复杂 JSON 结构。

这里是 JSON 结构示例:

"_cat0": [
    {
        "title": "category header",
        "catId": 1
    },
    {
        "id": 542232,
        "title": "post post",
        "time": "1421744040"
    },
    {
        "id": 542232,
        "title": "post post",
        "time": "1421744040"
    },
    {
        "id": 542232,
        "title": "post post",
        "time": "1421744040"
    }
],

正如您在这里看到的,我们有一个 head object 代表每个部分的类别。 "_cat0"实际上是一个前缀,包含了JSON中每个类别的完整数据。这个前缀是可延续的,包含了里面的所有内容,这意味着:帖子、类别数据和更多参数。

每个类别的第一个 object 包含标题和 category-id

{
        "title": "category header",
        "catId": 1
    } 

其他 object 包含该类别的帖子。

我的 RestKit 问题是通过 JSON.

中的值找到 Post object 和类别 object

我考虑在头部 object 中找到唯一键并将其存储为类别 object 然后 JSON 中的任何其他 object 存储为Post。但是我没有找到任何可以帮助我确定密钥存在或检查 object 的密钥是否可为空的函数。

这是我对这个问题的尝试:

if ([representation containsValueForKey:@"catId"]) {
        // it's a category object
        return categoryMapping;
    } else {
        // it's a post object
        return postMapping;
    }

但是这段代码在 运行 之后崩溃了。

对这个问题有什么想法吗?

如果您已将 JSON 数组分配给名为 _cat0 的对象,您可以执行以下操作:

for (NSDictionary *object in _cat0) {
  if ([[object allKeys] contains:@"catId"]) {
    // Process object as category metadata.
  } else {
    // Process object as a post.
  }
}

如果您可以控制 JSON 响应,我 强烈 建议您使其结构更有意义。大致如下:

"_cat0": {
    "title": "category header",
    "catId": 1
    "posts": [
        {
            "id": 542232,
            "title": "post post",
            "time": "1421744040"
        },
        {
            "id": 542232,
            "title": "post post",
            "time": "1421744040"
        },
        {
            "id": 542232,
            "title": "post post",
            "time": "1421744040"
        }
    ]
},