2015-03-10 6 views
0

У меня проблема с моим кодом Swift, который включает в себя структуру Alamofire и SwiftyJson.API Youtube для AlamoFire в Swift

И я пытаюсь получить некоторые данные из API YouTube корыта этого https://gdata.youtube.com/feeds/api/videos?q=kortsagt&max-re%E2%80%8C%E2%80%8Bsults=5&v=2&alt=jsonc&orderby=published

И код работает отлично, пока не дойдет до линии с

if let data = jsonObj.arrayValue as [JSON]?{} 

И просто умирает там.

Вот мой пример кода:

func loadNewVideo(){ 
    if(loadingStatus == false){ 
     loadingStatus == true 
     dataVideo.removeAll() 
     Alamofire.request(.GET, "https://gdata.youtube.com/feeds/api/videos?q=kortsagt&max-re%E2%80%8C%E2%80%8Bsults=5&v=2&alt=jsonc&orderby=published").responseJSON { (request, response, json, error) in 
      //println(json) 
      if json != nil { 
       var jsonObj = JSON(json!) 
       println(jsonObj) 
       if let data = jsonObj.arrayValue as [JSON]? { 
        println(data) 
        dataVideo = data 
        self.collectionView?.reloadData() 
       } 
       else { 
        println("loading error") 
       } 
      } 
     } 
    } 
    else{ 
     println("Loader JSON") 
    } 
} 

Что случилось с этим кодом, и как это исправить?

ответ

0

Правильно вы звоните в Alamofire, но вы не правильно разбираете данные, поступающие с сервера. Прежде всего, я бы рекомендовал вам прочитать SwiftyJSON README. Это должно дать вам хорошее представление о том, как использовать SwiftyJSON на высоком уровне. Затем попробуйте выполнить приведенные ниже изменения.

func loadNewVideo(){ 
    if (loadingStatus == false) { 
     loadingStatus == true 
     dataVideo.removeAll() 

     let URLString = "https://gdata.youtube.com/feeds/api/videos?q=kortsagt&max-re%E2%80%8C%E2%80%8Bsults=5&v=2&alt=jsonc&orderby=published" 

     let request = Alamofire.request(.GET, URLString) 
     request.responseJSON { request, response, jsonData, error in 
      if let json = json { 
       let json = JSON(jsonData) 
       if let items = json["data"]["items"].array { 
        println(items) 

        for item in items { 
         println(item) 
        } 

        // You need to parse the items into the video data 
        dataVideo = data 
        self.collectionView?.reloadData() 
       } 
      } else { 
       println("loading error") 
      } 
     } 
    } else { 
     println("Loader JSON") 
    } 
} 

Не заполнено. Вам нужно выяснить, как превратить элементы в видеоданные. Я оставлю эту часть тебе.

+0

Эй, @Joachimdj, это в конечном итоге решило вашу проблему? Если да, можете ли вы продвинуть и отметить в качестве ответа? – cnoon

+0

Jup, спасибо большое и жаль за задержку looong:/ – Joachimdj

+0

Удивительный! Затем вы должны отметить его как правильный ответ и возвышение. – cnoon

1

Работы лучше как комментарий, но у меня нет репутации. В конце первого ответа полдень заявил, что «вам нужно выяснить, как превращать элементы в видеоданные». Я просто надеялся добавить к этому. Youtube предоставит вам идентификатор видео. Вы можете легко воспроизводить видео с помощью сторонней библиотеки, такой как this library, или this library, есть и другие, и их довольно легко реализовать.

+0

Достаточно одного для вашего представителя и отличных ресурсов в вашем ответе – John

Смежные вопросы