2015-06-23 26 views
7

Próbując dostać cały utwór użytkownicy odtwarzania, to działa w Objective-C demo aplikacji, ale gdy próbuję w Swift powraca to:SPTPlaylistSnapshot tracksForPlayback zwraca nil

<SPTPlaylistList: 0x7fca22d72460>: 0-0 of 1 items (Function)

używam tego kodu:

SPTPlaylistList.playlistsForUserWithSession(session, callback: { (error, object) -> Void in 
      if error == nil { 
       var playlists = object as! SPTListPage 
       println(playlists) 
       SPTPlaylistSnapshot.playlistWithURI(playlists.items[0].uri, accessToken: session.accessToken, callback: { (error:NSError!, obj) -> Void in 
        var playl = obj as! SPTPlaylistSnapshot 
        println(playl.firstTrackPage.tracksForPlayback) 
       }) 
      } 

     }) 

i jest to kod Objective-C, który pracuje:

[SPTPlaylistList playlistsForUserWithSession:session callback:^(NSError *error, id object) { 
    SPTListPage *aa = object; 
    NSLog(@"%@",aa.items); 
    [SPTPlaylistSnapshot playlistWithURI:[NSURL URLWithString:@"spotify:user:spotifizr:playlist:3bpGFVfycGnhtcEVb95G98"] 
          accessToken:session.accessToken 
           callback:^(NSError *error, SPTPlaylistSnapshot *object) { 
            NSLog(@"tracks on page 1 = %@", [object.firstTrackPage tracksForPlayback]); 

           }]; 
}]; 

Nie wiem, dlaczego to jest powrót (function) w projekcie Swift zamiast wszystkich ścieżek.

Edit: Próbowałem

println(playl.firstTrackPage.tracksForPlayback()) 

ale teraz zwraca nil, chociaż mam 50 utworów z listy odtwarzania.

+0

Sprawdź, czy 'playlists.items [0] .uri' to wysyła poprawnie, zmienić' (błąd: NSError, obj) '' coś podobnego (błędu: NSError!, Obj: SPTPlaylistSnapshot) 'i ostatecznie zmień to' var play1: SPTPlaylistSnapshot = obj' i skomentuj nas. – eliasRuizHz

+2

@eliasRuizHz nie działał, jeśli masz trochę wolnego czasu, możesz wypróbować ten projekt testowy, który wysłałem https://github.com/spotify/ios-sdk/issues/377 – Ankit

Odpowiedz

2

Trzeba obejmować jedną lub obie z następujących czynności w wybranym zakresów, jeśli nie są one już tam są: SPTAuthPlaylistReadScope i SPTAuthPlaylistReadPrivateScope umożliwia dostęp do list odtwarzania publicznego i prywatnego użytkownika, odpowiednio.

Zobacz uwierzytelniania i zakresy odcinek https://github.com/spotify/ios-sdk

+0

Miałem [SPTAuthPlaylistModifyPublicScope, SPTAuthUserReadPrivateScope] i teraz dodałem [ SPTAuthPlaylistReadScore], ale nadal zwraca zero w moim szybkim projekcie. nie pewny dlaczego – Ankit