在示例项目 Guess the Intro 中,有一个名为waitAndFillTrackPool的方法,它可以从用户的播放列表中获取所有曲目。在此方法中,使用SPAsyncLoading进行调用以获取所有曲目的元数据。
[SPAsyncLoading waitUntilLoaded:tracks timeout:kSPAsyncLoadingDefaultTimeout then:^(NSArray *loadedTracks, NSArray *notLoadedTracks) {
// All of our tracks have loaded their metadata. Hooray!
NSLog(@"[%@ %@]: %@ of %@ tracks loaded.", NSStringFromClass([self class]), NSStringFromSelector(_cmd),[NSNumber numberWithInteger:loadedTracks.count], [NSNumber numberWithInteger:loadedTracks.count + notLoadedTracks.count]);
正如评论所说,成功后,应加载所有曲目的元数据。但是,我无法获取track.album.cover.image(它返回 null)。所有其他元数据似乎都在那里。
为了测试发生了什么,我在加载元数据后添加了这个:
SPTrack *test = [theTrackPool objectAtIndex:0];
NSLog(@"track: %@ , is loaded: %s, image loaded: %s",test.name,test.loaded ? "true" : "false", test.album.cover.loaded ? "true" : "false");
哪些日志:
track: Howlin' For You , is loaded: true, image loaded: false
如果应该加载元数据,专辑封面不应该也可用吗?
澄清一下,如果使用播放管理器和键值观察,我可以获得这首特定曲目的专辑封面。但是,我确实遇到了与从 Spotify 下载封面艺术 URL 和键值观察类似的第一个值 nil,第二个值正确。也许这是一个类似的错误?如果专辑封面确实需要重新检查,我如何设置观察者从一系列曲目中获取专辑封面?
谢谢你的时间!