当前位置:  开发笔记 > 前端 > 正文

iPhone NSArray来自词典词典的价值观

如何解决《iPhoneNSArray来自词典词典的价值观》经验,为你挑选了1个好方法。

我有一个字典词典,它以JSON格式返回给我

{
    "neverstart": {
        "color": 0, 
        "count": 0, 
        "uid": 32387, 
        "id": 73129, 
        "name": "neverstart"
    }, 
    "dev": {
        "color": 0, 
        "count": 1, 
        "uid": 32387, 
        "id": 72778, 
        "name": "dev"
    }, 
    "iphone": {
        "color": 0, 
        "count": 1, 
        "uid": 32387, 
        "id": 72777, 
        "name": "iphone"
    }
}

我还有一个NSArray,其中包含项目所需的id.例如[72777,73129]

我需要做的是获取数组中项目的id => name字典.我知道这可以通过迭代数组,然后循环遍历Dictionary中的所有值并检查值,但似乎应该有一个不那么冗长的方法来做到这一点.

请原谅我的无知,因为我只想找到解决iPhone SDK的方法并学习Objective C和Cocoa.



1> Quinn Taylor..:

首先,因为你正在使用JSON,我希望你已经找到了BSJSONAdditions和/或json-framework,它们都是用于将JSON解析为本机Cocoa结构的开源项目.这篇博客文章介绍了如何使用后者从JSON字符串中获取NSDictionary.

然后问题变成在字典中找到匹配值.我不知道有一种方法可以满足您的需求 - Cocoa框架非常强大,但设计非常通用且灵活.但是,在不太多的行中组合起来应该不会太难......(因为你在iPhone上进行编程,我会使用快速枚举来使代码更清晰.)

NSDictionary* jsonDictionary = ...
NSDictionary* innerDictionary;
NSArray* requiredIDs = ...
NSMutableDictionary* matches = [NSMutableDictionary dictionary];
for (id key in jsonDictionary) {
    innerDictionary = [jsonDictionary objectForKey:key];
    if ([requiredIDs containsObject:[innerDictionary objectForKey:@"id"]])
        [matches setObject:[innerDictionary objectForKey:@"name"]
                    forKey:[innerDictionary objectForKey:@"id"]];
}

此代码可能有拼写错误,但概念应该是合理的.另请注意,调用[NSMutableDictionary dictionary]将返回一个自动释放的对象.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有