Swift 2 Parsing JSON-No se puede subindicar un valor de tipo ''AnyObject''
swift2 (2)
Puedes hacerlo
let title : String
if let titleVal = item["Title"] as? String
{
title = titleVal
print(title)
}
Esto se ocupará de verificar si el valor de la propiedad del Title
es nulo o no. Si no es nulo, leerá el valor y se establecerá en la variable titleVal
.
Si está seguro de que nunca tendrá un valor nulo, puede usar este código
let title = item["Title"] as! String
He intentado seguir ejemplos para analizar un archivo JSON (por ejemplo, una respuesta a otra pregunta publicada aquí: https://stackoverflow.com/a/27206145/4040201 ) pero no puedo hacer que funcione. Ahora recibo el error "No se puede subindicar un valor de tipo ''AnyObject''" en las líneas "let ... = item [" ... "] as? String".
func connectionDidFinishLoading(connection: NSURLConnection) {
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(self.bytes!, options: NSJSONReadingOptions.MutableContainers) as! Dictionary<String, AnyObject>
if let searchResults = jsonResult["Search"] as? [AnyObject] {
for item in searchResults {
let title = item["Title"] as? String //Error Here
let type = item["Type"] as? String //Error Here
let year = item["Year"] as? String //Error Here
print("Title: /(title) Type: /(type) Year: /(year)")
}
}
} catch let error as NSError {
NSLog("JSON Error: /(error)")
}
}
Ejemplo de JSON:
{ "Search": [
{
"Title":"Example 1",
"Year":"2001",
"Type":"Type1"
},
{
"Title":"Example 2",
"Year":"2006",
"Type":"Type1"
},
{
"Title":"Example 3",
"Year":"1955",
"Type":"Type1"
}
]}
prueba esto
func connectionDidFinishLoading(connection: NSURLConnection) {
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(self.bytes!, options: NSJSONReadingOptions.MutableContainers) as! Dictionary<String, AnyObject>
if let searchResults = jsonResult["Search"] as? [[String: AnyObject]] {
for item in searchResults {
let title = item["Title"]
let type = item["Type"]
let year = item["Year"]
print("Title: /(title) Type: /(type) Year: /(year)")
}
}
} catch let error as NSError {
NSLog("JSON Error: /(error)")
}
}