Luego de buscar en varios repositorios y foros de internet al final hemos hallado la solución que te enseñaremos ahora.
Solución:
Si quieres recorrer json["items"]
arrayprobar:
for (key, subJson) in json["items"]
if let title = subJson["title"].string
println(title)
En cuanto al segundo método, .arrayValue
devoluciones noOptional
arrayDeberías usar .array
en cambio:
if let items = json["items"].array
for item in items
if let title = item["title"].string
println(title)
Me resulta un poco extraño explicarme a mí mismo, porque en realidad uso:
for (key: String, subJson: JSON) in json
//Do something you want
da errores de sintaxis (al menos en Swift 2.0)
correcto fue:
for (key, subJson) in json
//Do something you want
donde de hecho key es un string y subJson es un objeto JSON.
Sin embargo, me gusta hacerlo un poco diferente, aquí hay un ejemplo:
//jsonResult from API request,JSON result from Alamofire
if let jsonArray = jsonResult?.array
//it is an array, each array contains a dictionary
for item in jsonArray
if let jsonDict = item.dictionary //jsonDict : [String : JSON]?
//loop through all objects in this jsonDictionary
let postId = jsonDict!["postId"]!.intValue
let text = jsonDict!["text"]!.stringValue
//...etc. ...create post object..etc.
if(post != nil)
posts.append(post!)
En el bucle for, el tipo de key
no puede ser del tipo "title"
. Ya que "title"
es un stringve por : key:String
. Y luego Inside the Loop puedes usar específicamente "title"
Cuándo lo necesitas. Y también el tipo desubJson
tiene que ser JSON
.
Y dado que un archivo JSON puede considerarse como 2D arrayla json["items'].arrayValue
devolverá varios objetos. Es muy recomendable utilizar: if let title = json["items"][2].arrayValue
.
Eche un vistazo a: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Types.html
Te mostramos reseñas y puntuaciones
Si eres capaz, tienes el poder dejar un escrito acerca de qué te ha gustado de esta noticia.