2014-06-06 13 views
7

Sto provando a recuperare i valori da una matrice ottenuta da una richiesta Web JSON. Ma non riesco a far funzionare la funzione valueForKey in modo da poter applicare la stringa a un'etichetta. L'esempio seguente cerca API di Apple per il software. Come test, voglio essere in grado di applicare la chiave "trackName" a un UILabel, ma tutto ciò che provo, o arresto anomalo o ritorno nil.Ottenere i valori dalla matrice JSON in Swift

Ecco il mio codice

func searchFunction(searchQuery: NSString) { 
    var url : NSURL = NSURL.URLWithString("https://itunes.apple.com/search?term=\(searchQuery)&media=software") 
    var request: NSURLRequest = NSURLRequest(URL:url) 
    let config = NSURLSessionConfiguration.defaultSessionConfiguration() 
    let session = NSURLSession(configuration: config) 

    let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in 

     var newdata : NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 

     var info : NSArray = newdata.valueForKey("results") as NSArray 

     var name: String? = info.valueForKey("trackName") as? String // Returns nil 
     println(name)//Returns nil 


     var name2 : NSString = info.valueForKey("trackName") as NSString //Crashes 
     println(name2) //Crashes 

     }); 


    task.resume() 
    println("Resumed") 

} 

I commenti successivi alle variabili spiega ciò che accade con ciascuno di essi. Qualcuno può spiegare come posso convertire valueForKey ("trackName") in una stringa che può essere applicata a un'etichetta?

Grazie!

risposta

17

Info è un array, in modo da verificare con:

var name: String? = info[0].valueForKey("trackName") as? String 
var name: String? = info[0].valueForKey("trackName") as? NSString 
+0

Impressionante! Ha funzionato! Perché devo specificare l'indice, "0"? In Objective-C potrei usare un modo simile a quello che ho e sputerebbe una stringa. – DookieMan

Problemi correlati