2017-02-09 10 views
0

このデータを通知として取得し、使用可能な変数タイプに読み込みたい。私はそれらのすべてを稼働させましたが、報酬とAPSSwift 3.0通知が配列の配列または辞書の配列に変換できますか?

%@ [AnyHashable("description"): Open 10 common chests.,  AnyHashable("icon"):  localhost:8000//media/achievements/Common%20Chest%20Go- Getter/bomb.jpg, AnyHashable("name"): Common Chest Go-Getter,  AnyHashable("gcm.message_id"):1486597426811663%bf6da727bf. 6da727, AnyHashable("rewards"): {"Battle helm":1,"Gems":1000}, AnyHashable("aps"): { 
    alert = "Achievement Completed"; 
}] 

どのように使用可能な変数に変換するのですか?

AnyHashable("rewards"): {"Battle helm":1,"Gems":1000},  AnyHashable("aps"): { 
    alert = "Achievement Completed"; 
} 

戻された項目は、そのような...

let rewards = userInfo["rewards"] as! [String:Int] 

が動作しないのUserInfoと呼ばれ、この上の任意の助けをいただければ幸いです!もう一度私は速い3.0にあるので、速い3.0の例が助けることができる。あなたはこれで混乱しているよう

答えて

1

通知のUserInfoDictionary<String, Any>または[String: Any]

let userInfo: [String: Any] = [ 
    "description": "Open 10 common chests.", 
    "icon": "localhost:8000//media/achievements/Common%20Chest%20Go- Getter/bomb.jpg", 
    "name": "Common Chest Go-Getter", 
    "gcm.message_id": "1486597426811663%bf6da727bf. 6da727", 

    "rewards": [ 
     "Battle helm": 1, 
     "Gems":1000 
    ], 
    "aps": [ 
     "alert": "Achievement Completed" 
    ] 
] 

if let rewards = userInfo["rewards"] as? [String: Any] { 

    if let battle = rewards["Battle helm"] as? Int { 
    print(battle) // 1 
    } 

    if let gems = rewards["Gems"] as? Int { 
    print(gems) // 1000 
    } 

} 

if let aps = userInfo["aps"] as? [String: Any] { 

    if let alert = aps["alert"] as? String { 
    print(alert) // Achievement Completed 
    } 

} 

として解析さはルックス:

let arrayOfStrings = [String]() 
let dictionary = [String: Any]() 

let arrayOfDictionaries = [[String:Any]]() 
関連する問題