2015-11-07 75 views
1

我想從iTunes搜索API獲取預覽鏈接。我有一個函數可以在點擊按鈕時獲取信息,但函數沒有被調用。我想獲得結果數組中第一個對象的預覽鏈接如何解決此問題? enter image description here爲什麼函數不檢索數據?

var d: NSMutableData = NSMutable Data() 

var tData: NSArray = NSArray() 

func ctn(receivedResponse: NSURLConnection!, receivedResponse response: NSURLResponse!) { 
// clear out the data object if a new request was received. 
self.d = NSMutableData() 
} 

func ctn(ctn: NSURLConnection!, receivedData d: NSData!) { 
    self.d.appendData(d) 
} 
func ctnFinishedLoading(ctn: NSURLConnection!) throws { 
var err: NSError 
var jResult: NSDictionary = try NSJSONSerialization.JSONObjectWithData(d, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
if jResult.count>0 && jResult["results"]!.count>0 { 
    var results: NSArray = jResult["results"]as! NSArray 
    self.tData = results 
    print(tData) 
    //self.appsTableView.reloadData() 
} 

    } 


func playit(sender: UIButton!) { 



let cell = table.dequeueReusableCellWithIdentifier("cell") 

let playButtonrow = sender.tag 

print(ret[playButtonrow]) 

let searchTerm: String = ret[playButtonrow] 

let itunesSearchTerm = searchTerm.stringByReplacingOccurrencesOfString(" ", withString: "+", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil) 

    if let escapedSearchTerm = itunesSearchTerm.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding) { 
let urlPath = "https://itunes.apple.com/search?term=\(escapedSearchTerm)&media=music" 
let url: NSURL = NSURL(string: urlPath)! 
let request: NSURLRequest = NSURLRequest(URL: url) 
let ctn: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)! 


print("Search iTunes API at URL \(url)") 

ctn.start() 



} 

回答

1

搶previewUrl的方法是搶單個結果陣列成員的值,例如具有索引0,然後拉動值用於previewUrl鍵的第一個。例如:

if jResult.count>0 && jResult["results"]!.count>0 { 
    var results: NSArray = jResult["results"]as! NSArray 

    if let previewUrl = results[0]["previewUrl"] { 
     print(previewUrl!) 
    } 
} 

由於NSURLConnection在iOS版9已經過時,我還會給你使用NSURLSession檢索來自iTunes的API的previewUrls的一種方式。

let urlPath = "https://itunes.apple.com/search?term=\(escapedSearchTerm)&media=music" 
let url: NSURL = NSURL(string: urlPath)! 
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) -> Void in 
    do { 
     if let dict: NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary 
     { 
      // The search is complete. 
      for result in dict["results"] as! NSArray { 
       if let previewUrl = result["previewUrl"] { 
        print(previewUrl!) 
       } 
      } 
     } 
    } catch let jsonError as NSError { 
     // Handle error. 
    } 
} 
task.resume() 
+0

如果我想只是第previewUrl,將我將其更改爲'如果讓previewUrl =結果[0] [ 「previewUrl」] { 打印(previewUrl!) }' – xxtmanxx

+0

如果你只是想第一previewUrl,它是:'if let previewUrl = dict [「results」]![0] [「previewUrl」] {print(previewUrl!)}' – Daniel

+0

這是我改變它的,但它仍然返回所有預覽鏈接。 http://puu.sh/ldALL/0b9aa966ee.png – xxtmanxx

相關問題