我在我的应用程序的表格视图中显示 Spotify 曲目列表,我想下载这些曲目所属专辑的封面艺术。
我登录到 CocoaLibSpotify,我可以播放所有曲目,所以这部分很好。我似乎无法开始工作的是封面艺术的下载。我遵循 SimplePlayer 项目的代码,除了我将 SPTrack 实例存储在可变字典 (tracksDownladingForCoverArt) 中,因为可能有许多轨道下载封面艺术。
所以,这就是我所做的:
[[SPSession sharedSession] trackForURL:nativeSpotifyURL callback:^(SPTrack *track) {
if (track != nil) {
[track addObserver:self forKeyPath:@"album.cover.spotifyURL" options:0 context:NULL];
self.tracksDownloadingForCoverArt[nativeSpotifyURL] = track;
[SPAsyncLoading waitUntilLoaded:track timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *tracks, NSArray *notLoadedTracks) {
if ([tracks count] > 0) {
// I don't believe I need to do anything here
}
}];
}
}];
observeValueForKeyPath:ofObject:change:context: 被调用一次,新旧值都为 nil,但在那之后,什么也没有。但是,如果我遵循 SimplePlayer 的字母(即使用 self.currentTrack 而不是字典)并注册键路径 @"self.currentTrack.album.cover.spotifyURL",observerValue... 方法被调用两次,一次与 nil 和一次与实际值。
我错过了什么?哦,我注册的是 spotifyURL 而不是图像,所以我可以缓存图像。这样,当用户退出应用程序并稍后返回时,不必重新加载所有图像。