2015-09-07 63 views
1

我有一個JSON獲取發生,然後我做了數據的東西。我的JSONObject被創建,然後我開始處理數據。一個樣本可以在這裏看到:https://openlibrary.org/api/books?bibkeys=1593243987&f&jscmd=data&format=jsonJSON展開未運行

我的第一個塊提取作者姓名是完美的,但第二個提取封面url作爲字符串甚至沒有運行,我不知道爲什麼。

如果我在if let thumbs = bookDictionary["cover"] as? NSArray {處設置了一個斷點,它會停止,但是當我「通過」代碼時,它會跳到最後並繼續前進,甚至不會在塊內運行任何內容。

我希望任何人都可以提供幫助。我正在使用Swift 2.0/Xcode 7b6。

let requestURL = ("https://openlibrary.org/api/books?bibkeys=" + lookUpID + "&f&jscmd=data&format=json") 
     let url = NSURL(string: requestURL) 
     let req = NSURLRequest(URL: url!) 
     let dataTask = session.dataTaskWithRequest(req) { 
      (data, response, error) in 
      do { 
       let jsonObject = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary 


    if let bookDictionary: AnyObject = jsonObject!["\(self.lookUpID)"] { 

       // Retrieve the author name 
        var names = [String]() 
        if let authors = bookDictionary["authors"] as? NSArray { 
         for author in authors { 
          if let author = author as? NSDictionary, 
           let name = author["name"] as? String { 
            names.append(name) 
          } 
         } 
        } 

       // Retrieve cover url 
        var coverThumbURL: String = "" 
        if let thumbs = bookDictionary["cover"] as? NSArray { 
         // This code isn't running at all. 
         for thumb in thumbs { 
          if let thumb = thumb as? NSDictionary, 
           let thumbnail = thumb["medium"] as? String { 
            coverThumbURL = thumbnail 
          } 
         } 
        } 
       } 
+1

'bookDictionary [「cover」]'是一個'NSDictionary'。 – Larme

+0

@Larme我意識到這一點,但不知道這是如何涉及到這個問題,但? – aamck

+1

還沒有看過這個,但是如果封面是字典,那麼你對NSArray的轉換就會失敗。你需要轉換爲NSDictionary – bjtitus

回答

1

感謝您的幫助。我做了一些環視&固定的鑄件。

var coverThumbURL: String = "" 
if let thumbs = bookDictionary["cover"] as? NSDictionary { 
let thumbnail = thumbs.valueForKey("medium") as? String 
coverThumbURL = thumbnail! 
       }