#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 = список воспроизведения, пожалуйста, подскажите мне