2015-07-11 2 views
-1

Я пытаюсь найти правильный способ для цикла и извлечения значений в SwiftyJSON. Пожалуйста, просмотрите комментарии в коде ниже.Правильно петля и получить значение в SwiftyJSON

audioReq.executeWithResultBlock({ 
      response in 
      let json = JSON(response.json) 
      for (key, subJson) in json { 
       if let title = subJson[key].string { //<-- Loop does not work! 
        println(title)     //  It prints nothing! 
       } 
      } 

      if let title = json[0]["first_name"].string { 
       println(title)         //<-- Works 
      } 
      if let title = json[0]["last_name"].string { 
       println(title)         //<-- Works 
      } 
      if let title = json[0][1].string { 
       println(title)      //<-- Does not work! 
      }           // Prints nothing! 

      if let title = json[0]["id"].string { 
       println(title)      //<-- Does not work! 
      }           // Prints nothing! 
      println(response.json) 
            }, 
      errorBlock: {(error:NSError!) -> Void in 
       println(error.localizedDescription) 
     }) 

Содержание response.json:

(
     { 
     "first_name" = "Dachnik"; 
     id = 12345678;    // should be "id" = 12345678 
     "last_name" = "Neudachnik"; 
    } 
) 
+0

Ответ JSON, кажется, неправильно отформатирован ... – driver733

+0

есть вы смогли решить эту проблему? – Miknash

ответ

1

Вы используете массив вместо словаря. Что должно работать в

for (key, subJson) in json[0] { 
    if let title = subJson[key].string { //<-- Loop does not work! 
     println(title)     //  It prints nothing! 
    } 
} 

Если у вас есть несколько пользователей, то вы должны сделать что-то подобное (не MAC здесь)

for dict in json { 
    // go through dictionary elements here: first_name, last_name, id 
    // you can use same for loop as above 
} 
+0

Я связался с разработчиком, ответственным за SDK, который я использую, и он сказал, что это нормально для ответа сервера, чтобы выглядеть так :(Он не может использоваться как JSON из-за неправильного форматирования, но его все еще можно использовать с помощь NSDictionary. – driver733