如何在NSDictionary中获取密钥的价值?

时间:2014-12-30 10:54:18

标签: objective-c json push-notification apple-push-notifications

这是我的静音推送通知的用户信息。如何在objective-c中获得结果的价值?

{
    aps =     {
        "content-available" = 1;
        result = STOP;
        sound = "";
    };
}

2 个答案:

答案 0 :(得分:0)

使用KVC,您可以通过一次方法调用深入嵌套字典。

[userInfo valueForKeyPath:@"aps.result"];

接受的答案使用KVC&#39; valueForKey:。请注意,NSDictionary自己的方法objectForKey:存在差异。虽然第一个只在问题中根据需要采用NSString,但第二个采用符合NSCopying协议(id<NSCopying>)的任何对象。 NSStringNSNumberNSDate,...可以轻松为您自己的班级实施NSCopying

NSDictionary也支持订阅。来自docs

  

objectForKeyedSubscript:

     
    

返回与给定键关联的值。

         

<强>讨论
    此方法与objectForKey:

的行为相同   

除非你想在我的回答中做一些KVC特定的事情,你应该更喜欢objectForKey:而实际上你可以编写紧凑的代码

id obj = userInfo[@"aps"][@"result"]; 

或者如果您知道对象的类(示例中为NSString

NSString *obj = userInfo[@"aps"][@"result"]; 

答案 1 :(得分:-2)

NSLog(@"%@",[[Response valueForKey:@"aps"] valueForKey:@"result"]);