如何将NSDictionary解析为NSUserDefaults IOS7

时间:2014-05-26 11:25:54

标签: ios objective-c nsdictionary


在我的应用程序中,我想在UILabel中显示远程通知。所以我正在尝试将“Appdelegate”中的通知消息传递给我的故事板,它不起作用请告诉我如何解决这个问题。

我的“Appdelegate”代码:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{

  NSString *messag = [[userInfo description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];

 [[NSUserDefaults standardUserDefaults] setObject: messag forKey:@"message"];
 [[NSUserDefaults standardUserDefaults]synchronize];
 NSLog (@"message %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"message"]);
 UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 personalnottypoliticalViewController *ringingVC = [mainstoryboard instantiateViewControllerWithIdentifier:@"notifymess"];

 [self.window setRootViewController: ringingVC];
 }

当我打印我的数据时,它会像:

message {
aps =     {
    alert = home;
    badge = 3;
    sound = "";
 };
}

在我的viewcontroller中我使用过这样的。

self.message.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"message"];
  NSLog (@"message %@", [[NSUserDefaults standardUserDefaults] objectForKey:@"message"]);

在上面的数据我只需要“警报”值如何获取警报值并存储到数据中请告诉我是否可以做到以及如何实现这一点。我在这里堆叠很久没有请给出一些想法来实现这一点。

感谢。

2 个答案:

答案 0 :(得分:1)

description方法创建对象的字符串表示形式以进行日志记录,但您不会以这种方式使用它来访问对象的内容。

来自Apple文档 -

  

userInfo字典包含其值为另一个的aps密钥   字典。虽然您不应该需要aps中的信息   字典,您可以使用以下键检索其内容:

     

警告 - 该值可以是警报消息的字符串,也可以是   带有两个键的字典:正文和展示视图。身体的价值   key是一个包含警报消息和值的字符串   show-view键是一个布尔值。如果show-view键的值是   false,警报的“查看”按钮未显示。默认是显示   视图按钮,如果用户点击它,则启动应用程序。

     

徽章 -A   数字表示要从中下载的数据项的数量   供应商。此号码将显示在应用程序图标上。缺席的   徽章属性表示当前正在编号的任何数字   图标应该被删除。

     

声音 - 应用中声音文件的名称   捆绑作为警报声播放。如果指定“default”,则   应该播放默认声音。

因此,您可以使用此答案中的代码 - How to handle push notifications if the application is already running?

NSDictionary *aps=(NSDictionary *)[userInfo objectForKey:@"aps"];

NSString *message;

id alert = [aps objectForKey:@"alert"];
if ([alert isKindOfClass:[NSString class]]) {
   message = alert;
} else if ([alert isKindOfClass:[NSDictionary class]]) {
   message = [alert objectForKey:@"body"];
}

答案 1 :(得分:1)

您好,请尝试使用此代码

NSDictionary * dict = userInfo;

NSString * messag = [[[dict objectForKey:@&#34; message&#34;] objectForKey:@&#34; aps&#34;] objectForKey:@&#34; alert&#34;];