Cocoalibspotify,封面艺术未加载其余元数据

Posted

技术标签:

【中文标题】Cocoalibspotify,封面艺术未加载其余元数据【英文标题】:Cocoalibspotify, Cover art not loading with rest of metadata 【发布时间】:2012-12-26 18:30:16 【问题描述】:

在示例项目 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

如果应该加载元数据,专辑封面不应该也可用吗?

澄清一下,如果使用播放管理器和键值观察,我可以获得该特定曲目的专辑封面。但是,我确实遇到了与Downloading cover art URL from Spotify and key-value observing 类似的第一个值为零,第二个值正确。也许这是一个类似的错误?如果确实需要重新检查专辑封面,我如何设置观察者从一组曲目中获取专辑封面?

感谢您的宝贵时间!

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢您的回复!这就说得通了。如果我想通过SPAsyncLoading 加载它们,我将如何获得SPImages 的数组?我试图创建一个循环遍历所有轨道并拉出track.album.cover 的新类,这不起作用,因为它返回nil。我需要在 libSpotify 线程中使用imageWithImageId:inSession: 吗? 不,在轨道数组上使用SPAsyncLoading,然后在加载它们时执行 [[tracks valueForKey:@"album"] valueForKey:@"cover"] 以获取封面数组. 我尝试了两种不同的方法,但均未成功。第一个是遍历轨道并调用[aTrack.album.cover startLoading];,然后用SPAsyncLoading 加载它们。我认为加载专辑封面会成功,然后我可以调用你的函数来获取封面。检查album.cover.loaded 时会抛出此错误:'NSInvalidArgumentException',原因:'-[NSNull isLoaded]'。在加载所有曲目后,我还尝试按照您的建议获取专辑封面,并在封面数组上调用 SPAsyncLoading。这种方式在调用SPAsyncloading时同样报错。 您能否提供一些代码或伪代码来告诉我应该如何执行此操作的确切过程?我尝试循环播放几首曲目并致电[cover startLoading] 尝试使用KVO,但观察者从未收到更改通知。即使等待超过 20 分钟并手动检查封面也返回零。会不会有什么东西阻碍了加载? start loading 不起作用吗?感谢您的帮助。 SPImage 根本不是一个复杂的类——只要看看它的代码就能更好地理解它。另外,请参阅我对 ***.com/questions/14287370/… 的回答

以上是关于Cocoalibspotify,封面艺术未加载其余元数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Spotify 下载封面艺术 URL 和键值观察

CocoaLibSpotify - 库未加载

Spotify API,预加载封面艺术

使用 cocoalibspotify for iOS 获取艺术家列表

CocoaLibSpotify - SPSearch 通过 KVO 为 @"a" 返回 0 位艺术家

使用 mp3agic 删除封面艺术