サンプル プロジェクトの 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、2 番目の値が正しいことを経験しています。もしかしてこれも似たようなバグ?アルバム アートを再チェックする必要がある場合、トラックの配列からアルバム アートを取得するオブザーバーを設定するにはどうすればよいですか?
御時間ありがとうございます!