从 NSDictionary 中提取信息

Posted

技术标签:

【中文标题】从 NSDictionary 中提取信息【英文标题】:extracting information from NSDictionary 【发布时间】:2012-08-02 20:23:16 【问题描述】:

我有一个来自 Flickr api 请求的 NSDictionary 响应,它的描述如下所示:

self.userInfo: 
"_text" = "\n\n";
person =     
    "_text" = "\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n";
    description =         
    ;
    iconfarm = 0;
    iconserver = 0;
    id = "83943196@N02";
    ispro = 0;
    location =         
    ;
    "mbox_sha1sum" =         
        "_text" = 7b61c5d24f12345678be82c31234567830540;
    ;
    mobileurl =         
        "_text" = "http://m.flickr.com/photostream.gne?id=12345678";
    ;
    nsid = "12345678@N02";
    "path_alias" = "";
    photos =         
        "_text" = "\n\t\t\n\t\t\n\t\t\n\t\t\n\t";
        count =             
            "_text" = 2;
        ;
        firstdate =             
            "_text" = 12345678;
        ;
        firstdatetaken =             
            "_text" = "2012-08-01 12:46:38";
        ;
        views =             
            "_text" = 0;
        ;
    ;
    photosurl =         
        "_text" = "http://www.flickr.com/photos/12345678@N02/";
    ;
    profileurl =         
        "_text" = "http://www.flickr.com/people/12345678@N02/";
    ;
    realname =         
        "_text" = "Me TheUser";
    ;
    timezone =         
        label = "Pacific Time (US & Canada); Tijuana";
        offset = "-08:00";
    ;
    username =         
        "_text" = metheuser;
    ;
;
stat = ok;

我很难弄清楚如何将实名值提取到 NSString 中。

我试过了:

NSString * temp = [self.userInfo valueForKey:@"realname"];
NSLog (@"FL: nameOfSignedInUser. nameself.userInfo: %@", temp.debugDescription);

但返回为零。

谢谢!

【问题讨论】:

看起来realname 对象嵌套在person 对象中,您是否尝试过将person 作为字典检索,然后从中获取realname 是的,谢谢你的提示。我检查了计数和它的 3。我猜第一个是测试,第二个是人,第三个是统计 如有疑问,请遍历所有根对象的键和对象以查看您拥有的内容。在处理从 XML 解析的任意 Web 服务返回值时,我使用了类似的过程 【参考方案1】:
NSString *name = [self.userInfo valueForKeyPath:@"person.realname._text"];

【讨论】:

【参考方案2】:
NSString *realName = [[[self.userInfo objectForKey:@"person"] objectForKey:@"realname"] objectForKey:@"_text"];

【讨论】:

达米特;我敢肯定,当我回答我的答案时,您的答案看起来不像那样(这是相同的!)。我会删除我的... @***foe 抱歉,我删除并更改了它。没看到别人发的EJV 在这里确实是正确的答案。我从未使用过valueForKeyPath: 很高兴知道。 是的,我什至在 NSArray 类参考文档中都没有看到它。仅在 NSKeyValueCoding 协议参考中

以上是关于从 NSDictionary 中提取信息的主要内容,如果未能解决你的问题,请参考以下文章

从 NSDictionary 中提取数据

从城市飞艇用户信息中提取警报

如何从 NSDictionary 中提取一个整数并将其放入一个整数中?

如何在 iOS 中获取音频文件的持续时间?

检查 NSDictionary 中的键 - 不使用布尔 NSNumber 作为值 @iOS8

NSDictionary 具有空值