我有一段代码尝试迭代地将项目添加到 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,但是添加一个打印语句来打印[_itemsForPlayer objectAtIndex:i]
给了我:
<AVPlayerItem: 0x2002be60, asset = <AVURLAsset: 0x2003c0e0, URL = ipod-library://item/item.mp3?id=8966039988459606203>>
所以代码应该能够将它添加到 AVQueuePlayer 就好了。有没有人有任何想法?
编辑:非常感谢@borrrden,他在评论中回答了这个问题——我已经覆盖了类中其他地方的 insertItem:afterItem,错误来自被覆盖方法中的问题。谈谈你的愚蠢错误 - 再次感谢 Borrrden!