ios - Spotify iOS-SDK : Get Tracks from Playlist returns (null) Tracks

标签 ios objective-c arrays 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 范围。

最佳答案

这可能是由于缺少链接器标志,将“-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()
    })
}

关于ios - Spotify iOS-SDK : Get Tracks from Playlist returns (null) Tracks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39942669/

相关文章:

javascript - 如何在保留非数字元素的值的同时划分数组中的数字元素

ios - 如何使用 ios-charts 制作分组条形图?

ios - react native 构建错误 : Could not read optimization profile file (even after change optimization configuration)

ios - 从NSStrings中提取数字

ios - 撤销并重新创建过期的分发证书是否会破坏应用程序的推送通知?

ios - 使用 AFNetworking 获取请求并保存响应

objective-c - NSMutableDictionary 不保留值

ios - 无法在 swift 中重载 viewDidLoad() 中的函数

java - 当我将字符串数组和整数数组合并到合并数组时,合并数组时我想使用什么数据类型

php - 从多个复选框更新数据时出现困惑