我正在使用cocoalibspotify(好东西)在我的项目中流式传输Spotify音乐。
选择播放列表后,此代码将运行:
[[SPSession sharedSession] playlistForURL:myPlaylistUrl callback:^(SPPlaylist *playlist) {
if(playlist != nil){
_chosenPlaylist = playlist;
}
}];
后来我使用 _chosenPlaylist
创建所有轨道的数组。这对于我选择的第一个播放列表来说效果很好。但是,当我选择另一个播放列表(或再次选择相同的播放列表)时,块变量playlist
为 nil,这会导致崩溃。
注意:在选择第二个播放列表之前,我关闭了视图控制器,因此它的行为方式应与第一次相同。
关于为什么播放列表在我第二次运行此代码时返回为 nil 的任何想法?
编辑:我正在使用 ARC。_chosenPlaylist的声明看起来像这样SPPlaylist *_chosenPlaylist;
崩溃是由于以下行而发生的: [playlists addObject:_chosenPlaylist];
,这是有道理的,因为在这种情况下_chosenPlaylist为零。
基本上,playlistForURL:callback:
返回nil
播放列表的唯一方法是您为其提供无效的URL。仔细检查您的输入(myPlaylistUrl
的值) - 仅接受 from spotify:user:xxx:playlist:yyy
的 URL。