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

御時間ありがとうございます!

4

1 に答える 1

0

これは意図された動作です (プレイリストをロードするときに、プレイリスト内のすべてのトラックのカバーアートを一度にダウンロードしたとしたら、信じられないほどの量のデータになります!)。

プロパティにアクセスするimageと、主に KVO のカバーが読み込まれます。SPAsyncLoadingを使用してロードすることもできます。

于 2013-01-12T14:06:56.700 に答える