Swift – iterate array de dictionarys

Tratando de encontrar el título de cada libro:

var error: NSError? let path = NSBundle.mainBundle().pathForResource("books", ofType: "json") let jsonData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil) let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary let books = jsonDict["book"] var bookTitles:[String] //for bookDict:Dictionary in books { // println("title: \(bookDict["title"])") //} 

Cuando descompozo esas tres últimas líneas, todo el infierno se desata en Xcode6 beta3, todo el text se vuelve blanco, recibo constantes windows emergentes "SourceKitService Terminated" y "Functional editor limited", y obtengo estos útiles errores de compilation:

 <unknown>:0: error: unable to execute command: Segmentation fault: 11 <unknown>:0: error: swift frontend command failed due to signal 

Ofendí seriamente al comstackdor aquí. Entonces, ¿cuál es la forma correcta de iterar a través de la matriz de dictionarys y encontrar la propiedad "título" de cada dict?

Tiene problemas porque Swift no puede inferir que los libros son de tipo iterable. Si conoce el tipo de matriz que entra, debería elegir explícitamente este tipo. Si, por ejemplo, la matriz debe ser una matriz de dictionarys que tengan cadenas como objects y keys, debe hacer lo siguiente.

 if let books = jsonDict["book"] as? [[String:String]] { for bookDict in books { let title = bookDict["title"] println("title: \(title)") } } 

También tenga en count que debe eliminar el acceso al dictionary de subíndice de la interpolación de cadena porque contiene comillas. Solo tienes que hacerlo en dos líneas.