Я вызываю JSON API, который имеет несколько вложенных значений, которые мне нужно получить. Я использую SwiftyJSON, чтобы сделать все немного чище. Для значений верхнего уровня все работает нормально, но на более глубоком уровне я получаю ужасный «ноль при развертывании необязательного значения».
Вот как я делаю вызов API с помощью Alamofire:
Alamofire.request(APIRequests.Router.Nearby(self.page)).responseJSON(){
(_,_,json,_) in
println(json)
if (json != nil){
var jsonObj = JSON(json!)
if let userArray = jsonObj ["results"].array {
for userDict in userArray {
var username: String! = userDict["username"].string
var firstName: String! = userDict["firstName"].string
var profileImage: String! = userDict["userImages"]["profile"]["filename"].string
var characterName: String! = userDict["characters"]["characterName"].string
var user = User(username: username, profileImage: profileImage, firstName: firstName, characterName: characterName)
self.users.append(user)
}
}
Вот пример JSON:
{
userInfo: {
something: "abc",
requestType: "GET"
},
results: [
{
username: "Jess",
firstName: "Jessica",
userImages: {
profile: [
{
userImageID: "6",
filename: "user-07.jpg"
}
],
cover: [
{
userImageID: "15",
filename: "user-07.jpg"
}
]
},
characters: [
{
userCharacterID: "8",
characterName: "Amelia",
}
]
}
Для ключей верхнего уровня username
и firstName
отладчик показывает правильные значения, однако, как только я погружаюсь немного глубже, чтобы получить profileImage
или characterName
, они возвращаются как nil, хотя печать json показывает значения для этих ключей.
Что я делаю не так? Я просто не вижу этого.
Любые мысли будут полезны. Спасибо.