我有一段代码,我正在尝试迭代地向AVQueuePlayer添加项目,如下所示:
for (int i = tempNowPlayingIndex - 1; i < [_itemsForPlayer count]; i++) {
[self insertItem:[_itemsForPlayer objectAtIndex:i] afterItem:nil];
}
_itemsForPlayer
是包含AVPlayerItems的NSMutableArray
。
每当我在执行时到达这一行,我都会得到一个
'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
错误。我知道负责的一行是
[self insertItem:[_ itemsForPlayer objectAtIndex:i] afterItem:nil];
因为注释掉该行会删除错误。我假设问题是[_itemsForPlayer objectAtIndex:i]
没有返回AVPlayerItem,但是添加print语句来打印[_itemsForPlayer objectAtIndex:i]
给了我:
<AVPlayerItem: 0x2002be60, asset = <AVURLAsset: 0x2003c0e0, URL = ipod-library://item/item.mp3?id=8966039988459606203>>
所以代码应该能够将它添加到AVQueuePlayer就好了。有没有人有任何想法?
编辑:非常感谢@borrrden,他在评论中回答了这个问题 - 我已经覆盖了类中的insertItem:afterItem,并且错误来自重写方法中的问题。谈谈你的愚蠢错误 - 再次感谢Borrrden!