次のように、アイテムを AVQueuePlayer に繰り返し追加しようとしているコードがあります。
for (int i = tempNowPlayingIndex - 1; i < [_itemsForPlayer count]; i++) {
[self insertItem:[_itemsForPlayer objectAtIndex:i] afterItem:nil];
}
_itemsForPlayer
含まれているNSMutableArray
AVPlayerItems です。
ただし、実行時にこの行に到達するたびに、
'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
エラー。担当の行が
[self insertItem:[_itemsForPlayer objectAtIndex:i] afterItem:nil];
その行をコメントアウトするとエラーが削除されるためです。問題は[_itemsForPlayer objectAtIndex:i]
AVPlayerItem を返さないことだと思っていましたが、print ステートメントを print に追加すると、次のようになり[_itemsForPlayer objectAtIndex:i]
ます。
<AVPlayerItem: 0x2002be60, asset = <AVURLAsset: 0x2003c0e0, URL = ipod-library://item/item.mp3?id=8966039988459606203>>
したがって、コードはそれを AVQueuePlayer に問題なく追加できるはずです。誰にもアイデアはありますか?
編集:コメントで質問に答えてくれた@borrrdenに感謝します-クラスの他の場所でinsertItem:afterItemをオーバーライドしましたが、オーバーライドされたメソッドの問題からエラーが発生しました。あなたのばかげた過ちについて話してください - ありがとう、Borrrden!