Spotify iOS SDK Swift 显示所有 (!) 播放列表 (20+)
Posted
技术标签:
【中文标题】Spotify iOS SDK Swift 显示所有 (!) 播放列表 (20+)【英文标题】:Spotify iOS SDK Swift display all (!) playlists (20+) 【发布时间】:2017-10-26 06:01:33 【问题描述】:我能够在 Swift 中相当轻松地获得前 20 个播放列表。
func getPlaylists()
//DispatchQueue.global(qos: .userInitiated).async
let playListRequest = try! SPTPlaylistList.createRequestForGettingPlaylists(forUser: session.canonicalUsername, withAccessToken: session.accessToken)
Alamofire.request(playListRequest)
.response response in
let list = try! SPTPlaylistList(from: response.data, with: response.response)
for playList in list.items
if let playlist = playList as? SPTPartialPlaylist
let currentPlaylist: PlaylistItem = PlaylistItem(playlistName: playlist.name, playlistURL: playlist.uri.absoluteString)
self.playlists.append(currentPlaylist)
self.tableView.reloadData()
到目前为止 - 非常好。但这(根据文档仅提供前 20 个播放列表。
我怎样才能通过添加一个嵌套的循环来获得更多(全部!)播放列表
while list.hasNextPage == true
重构 C 代码不成功
提前致谢!
【问题讨论】:
【参考方案1】:您不能使用while循环做到这一点,因为网络电话是异步的。您可以递归下一个页面请求,而不是,每一次重新加载表中完成处理页面的回报。 P>
假定有以下属性 P>
var playlists = [SPTPartialPlaylist]()
在您的getPlaylists
功能,你可以有这样的事情(你有它使用Alamofire也能正常工作的方式): P>
SPTPlaylistList.playlists(forUser: session.canonicalUsername, withAccessToken: session.accessToken, callback: (error, response) in
self.activityIndicator.stopAnimating()
if let listPage = response as? SPTPlaylistList, let playlists = listPage.items as? [SPTPartialPlaylist]
self.playlists = playlists // or however you want to parse these
self.tableView.reloadData()
if listPage.hasNextPage
self.getNextPlaylistPage(currentPage: listPage)
)
在哪里getNextPlaylistPage
看起来是这样的: P>
func getNextPlaylistPage(currentPage: SPTListPage)
currentPage.requestNextPage(withAccessToken: AppDelegate.shared().auth?.session.accessToken, callback: (error, response) in
if let page = response as? SPTListPage, let playlists = page.items as? [SPTPartialPlaylist]
self.playlists.append(contentsOf: playlists) // or parse these beforehand, if you need/want to
self.tableView.reloadData()
if page.hasNextPage
self.getNextPlaylistPage(currentPage: page)
)
如果你想与你在你的问题有方法保持更做到这一点,你可以建立getNextPlaylistPage
使用Alamofire的组合和SPTListPage
的createRequestForNextPageWithAccessToken
功能。 P>
(注意,SPTPlaylistList
是SPTListPage
的子类。) P>
它也经过了几个月,因为我更新了我的SpotifyMetadata框架,因此,上述的一些可能已经略有改变......但一般的概念是相同的。 P>
【讨论】:
萨曼莎你好,非常感谢您的回复 - 它的工作就像一个魅力!不胜感激!个。跨度> @萨曼莎,将ü请引导我***.com/questions/55021016/… 跨度>以上是关于Spotify iOS SDK Swift 显示所有 (!) 播放列表 (20+)的主要内容,如果未能解决你的问题,请参考以下文章
Spotify SDK Demo Swift 可以工作,但不能翻译为基于 Storyboard 的项目
无法使用 Spotify iOS App Remote SDK 禁用自动播放
如何降低或提高 Spotify SDK Swift 中的音乐音量
如何使用 Spotify SDK 和 Swift 3 正确处理令牌刷新。错误代码 = 3840
Swift 3.0 中的 Spotify SDK:如何知道歌曲何时结束
Spotify SDK 播放器不工作:错误 Domain=com.spotify.ios-sdk.playback Code=1 “由于未指定的问题,操作失败。”