2

在示例项目 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,第二个值正确。也许这是一个类似的错误?如果专辑封面确实需要重新检查,我如何设置观察者从一系列曲目中获取专辑封面?

谢谢你的时间!

4

1 回答 1

0

这是预期的行为(想象一下,如果我们在您加载播放列表时一次下载播放列表中所有曲目的封面 - 这将是惊人的数据量!)。

访问该image属性会触发封面被加载,主要针对KVO。您也可以使用SPAsyncLoading来加载它们。

于 2013-01-12T14:06:56.700 回答