在示例项目中,猜猜简介,有一个名为 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
如果要加载元数据,专辑封面是否也不应该可用?
只是为了澄清,如果使用播放管理器和键值观察,我可以获得这个特定曲目的专辑封面。但是,我确实遇到类似的第一个值nil,第二个值正确在Downloading cover art URL from Spotify and key-value observing中。也许这是一个类似的错误?如果确实需要重新检查专辑封面,我如何设置观察者从一系列曲目中获取专辑封面?
谢谢你的时间!
答案 0 :(得分:0)
这是预期的行为(想象一下,如果我们在加载播放列表时立即为播放列表中的所有曲目下载了coverart - 这将是一个令人难以置信的大量数据!)。
访问image
属性将触发加载封面,主要用于KVO。您也可以使用SPAsyncLoading
加载它们。