2016-10-09 4 views
0

Spotify iOS SDK를 사용하여 선택한 재생 목록에서 트랙을 가져오고 싶습니다. 하지만 내 배열에는 항상 항목이 없습니다. 나는 트랙을 가져 오기 위해 다음 코드를 사용하고 있습니다 :Spotify iOS-SDK : 재생 목록에서 트랙 가져 오기 (null) 트랙

[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(널)마다

중 하나가이 문제의 원인 무엇을 알고 있나요? 모든 Spotify Scopes를 사용하고 있습니다.

답변

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() 
    }) 
} 
:

내가 내 응용 프로그램에서이 작업을 수행, 여기 내 코드입니다

관련 문제