Создать массив после импорта данных JSON из AlamoFire - PullRequest
0 голосов
/ 25 октября 2018

Я делаю вызов API, но ответ возвращается правильно.Это массив ссылок на YouTube:

"items": [
  {
   "kind": "youtube#playlistItem",
   "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/1GDmRHbln92JxGtet7SSiPs9SaY\"",
   "id": "UEw1dHZnblY0RmtqMHdpeFZ0bmNLZklqMEZuZEZmRUpYdS41NkI0NEY2RDEwNTU3Q0M2",
   "snippet": {
    "publishedAt": "2018-10-17T22:37:35.000Z",
    "channelId": "UCf-gdftRGql5XOUd_ZpVnZg",
    "title": "A Republican, Democrat, and Independent Drink Together | Strange Brew | ",
url:www.test url
}
    }
    }
    ]

Функция загрузки видео:

class Video: UIViewController, UITableViewDelegate, UITableViewDataSource {

var video = [LicenseDetails]()
let recVideos = NSURL(string: RecVideos)





func loadVideos() {
Helpers.showActivityIndicator(activityIndicator, view)

APIManager.shared.recVideos { json in
        if json != nil {
            self.video = []

            print("Lookin In", json)

//            Adds all items into the array list dist then goes through them all.
            if let listDis = json["items"].array {
                print("Looking For Items", listDis)

                for item in listDis {

                    let Video = LicenseDetails(json: item)
                    self.video.append(Video)
                    print("Test: ", self.video)

                }

                Helpers.hideActivityIndicator(self.activityIndicator)

            }
            }
        }
    }

И япытаюсь проанализировать данные, поступающие через класс LicenseDetail

class LicenseDetails {

    var title: String?
    var url: String?
    var videoId: String?



    init(json: JSON) {

        self.title = json["title"].string
        self.videoId = json["resourceId"]["videoId"].string

    }
}

Я не понимаю, почему я не могу заполнить свой массив listDis данными из информации JSON, а затем проанализировать его с помощью LicenseDetail (json:JSON) метод.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 25 октября 2018

Сначала убедитесь, что вы инициализируете все сохраненные свойства.И вам нужно привести данные Json в строку.Я использовал Swift способ кастинга.с amofire либо как вы написали, либо как-то таквот так:

class Video: UIViewController, UITableViewDelegate, UITableViewDataSource {
    var videos = [LicenseDetails]()
    required init(json: JSON) throws {
        super.init()
        let listDis = json["items"].array
        self.videos = listDist.map{LicenseDetails(json:$0)}
    }
}

И все.Надеюсь, что это работает.

...