Spotify iOS-SDK: возвращает треки из списка воспроизведения (null) Треки

#ios #objective-c #arrays #xcode #spotify

#iOS #objective-c #массивы #xcode #spotify

Вопрос:

Я хотел бы получать треки из выбранного списка воспроизведения с помощью Spotify iOS SDK. Но он всегда не возвращает никаких элементов в моем массиве. Я использую следующий код для извлечения треков:

 [SPTPlaylistSnapshot playlistWithURI:selectedPlaylist.uri accessToken:auth.session.accessToken callback:^(NSError *error, id object) {

    if (!error) {
        SPTPlaylistSnapshot *playlistSnapchot = object;

        NSArray *songItemsArray =  playlistSnapchot.firstTrackPage.items;
        NSLog(@"LOADED: %@", songItemsArray);

        [songItemsArray enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {

            SPTPartialTrack *track = obj;
            NSLog(@"%@", track.name);


        }];

    }
    else
    {
        NSLog(@"Error loading Playlist Tracks: %@", error.localizedDescription);
    }

}];
  

Каждый раз, когда мой songsItemsArray равен (null)

Кто-нибудь знает, в чем причина этой проблемы? Я использую все области Spotify.

Ответ №1:

Это может быть связано с отсутствием флага компоновщика, добавьте «-all_load» к другим флагам компоновщика в проекте.

Я делаю это в своем приложении, вот мой код:

 func getTracksFrom(page:SPTListPage, allItems:[SPTPlaylistTrack]) -> [SPTPlaylistTrack] {
    guard let items = page.items as? [SPTPlaylistTrack] else {print("empty page");return allItems}
    var allTracks = allItems
    allTracks.append(contentsOf: items)

    var nextPage = SPTListPage()

    if page.hasNextPage {
        page.requestNextPage(withAccessToken: (SPTAuth.defaultInstance().session.accessToken)!) { (error, data) in
            guard let p = data as? SPTListPage else {return}
            nextPage = p
        }

        return getTracksFrom(page:nextPage,allItems:allTracks)
    }
    return allTracks
}

func getAllTracksFrom(_ playlist:SPTPlaylistSnapshot) -> [SPTPlaylistTrack]  {
    var allTracks:[SPTPlaylistTrack] = []
    allTracks = getTracksFrom(page: playlist.firstTrackPage, allItems: allTracks)
    return allTracks
}

override func viewDidLoad() {
    super.viewDidLoad()
    guard let p = playlist else {return}
    SPTPlaylistSnapshot.playlist(withURI: p.uri, accessToken: (SPTAuth.defaultInstance().session.accessToken)!, callback: { (error, dataOrNil) in
        guard error == nil else {print(error!);return}
        guard let playlistSnapshot = dataOrNil as? SPTPlaylistSnapshot else {print("couldn't cast as SPTPlaylistSnapshot");return}
        self.tracks = self.getAllTracksFrom(playlistSnapshot)
        self.tableView.reloadData()
    })
}
  

Комментарии:

1. неразрешенный идентификатор в загрузке viewdid, p = список воспроизведения, пожалуйста, подскажите мне