簡體   English   中英

如何將NSDictionary解析為NSUserDefaults IOS7

[英]how to parse NSDictionary into NSUserDefaults IOS7


在我的應用程序中,我想在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 = "";
 };
}

在我的視圖控制器中,我已經這樣使用過。

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

在以上數據中,我僅需要“ Alert”值,如何獲取警報值並將其存儲到數據中,請告訴我這是可能的以及如何實現這一目標。 我在這里待了很長時間,請不要提出一些想法來實現這一目標。

謝謝。

description方法創建對象的字符串表示形式以進行記錄,但是您不會以這種方式使用它來訪問對象的內容。

從Apple文檔-

userInfo詞典包含aps鍵,其值是另一個詞典。 盡管您不需要aps詞典中的信息,但是可以使用以下鍵檢索其內容:

提醒 -The值是為該警報消息的字符串或具有兩個鍵的字典:主體和顯示圖。 主體鍵的值是包含警報消息的字符串,而顯示視圖鍵的值是布爾值。 如果show-view鍵的值為false,則不會顯示警報的“查看”按鈕。 默認設置為顯示“查看”按鈕,如果用戶點擊該按鈕,則會啟動該應用程序。

徽章 —一個數字,指示要從提供程序下載的數據項的數量。 該號碼將顯示在應用程序圖標上。 如果沒有badge屬性,則表明應該刪除當前用於標識圖標的任何數字。

聲音 -應用程序捆綁包中將作為警報聲音播放的聲音文件的名稱。 如果指定“默認”,則應播放默認聲音。

因此,您可以使用此答案中的代碼- 如果應用程序已在運行,則如何處理推送通知?

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"];
}

嗨,嘗試使用此代碼

NSDictionary * dict = userInfo;

NSString * messag = [[[dict objectForKey:@“ message”] objectForKey:@“ aps”] objectForKey:@“ alert”];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM