Swift

2014-06-06 7 views
7

JSON Array Değerlerini Alma Bir JSON web isteğinden aldığım bir diziden değerler almaya çalışıyorum. Ancak, StringForKey işlevinin çalışmasını sağlayamam, böylece dizeyi bir etikete uygulayabiliyorum. Aşağıdaki örnek, yazılım için Apples API'sini arar. Bir test olarak, "trackName" anahtarını bir UILabel'a uygulayabilmek istiyorum, ama denediğim her şey, ya çöküyorum ya da sıfır.Swift

İşte değişkenlere sonraki

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") 

} 

comments her biri ile ne anlatıyor benim kodudur. Birisi, valueForKey ("trackName") değerini bir etikete uygulanabilecek bir dizgeye nasıl dönüştürebileceğimi açıklayabilir mi?

Teşekkür ederiz!

cevap

17

Bilgi bir dizidir, bu nedenle kontrol:

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

Müthiş! İşe yaradı! Neden "0" dizinini belirtmem gerekiyor? Objective-C'de sahip olduğum şeye benzer bir şekilde kullanabilirdim ve bir ip çıkardı. – DookieMan