2017-02-09 40 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"; 
} 

返回的项目被称为USERINFO那么像......

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

不工作,有这方面的帮助将不胜感激!我再一次使用swift 3.0,所以swift 3.0的例子可以提供帮助。

回答

1

通知USERINFO被解析为Dictionary<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]]() 
相关问题