2017-02-09 3 views
0

Получение этих данных в виде уведомлений и их чтение в используемые типы переменных. Я получил все из них работать, но награда и АПСУведомление Swift 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, поэтому быстрые примеры 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]]()