2016-12-17 5 views
0

Je souhaite créer un tableau d'objets AVPlayerItem à partir d'un autre tableau, en utilisant la ligne dans la boucle. Cela fonctionne pour un seul article mais pas pour le tableau entier.iOS - Impossible d'utiliser AVQueuePlayer initwithitems()

MPMediaQuery *albumQuery = [MPMediaQuery albumsQuery]; 
MPMediaPropertyPredicate *albumPredicate = [MPMediaPropertyPredicate predicateWithValue:@"Out Of Exile" forProperty:MPMediaItemPropertyAlbumTitle]; 
[albumQuery addFilterPredicate:albumPredicate]; 
NSArray *songs = [albumQuery items]; 
NSMutableArray <AVPlayerItem*> *items; 
NSUInteger i = 0; 

while(i < [songs count]){ 
    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:[[songs objectAtIndex:i] valueForProperty:MPMediaItemPropertyAssetURL]]; 
    [items addObject:playerItem]; 
    i++; 
} 

AVPlayerItem *item = [[AVPlayerItem alloc] initWithURL:[[songs objectAtIndex:index] valueForProperty:MPMediaItemPropertyAssetURL]]; //manually created item which works 
_player = [[AVQueuePlayer alloc] initWithItems:items]; 

[_player play]; 

Donc, mon problème est que je ne peux pas initialiser correctement AVQueuePlayer avec et tableau et ça me rend fou. Si je l'initialise avec InitWithPlayerItem et ajoute l'article que j'ai créé cela fonctionne (joue), mais il ne fonctionne pas avec n'importe quel objet du tableau d'éléments.

Même en appelant InitWithItems:items[index*], rien ne se passe.

Répondre

1

Votre code fonctionne; la raison pour laquelle l'ajout items-AVQueuePlayer ne fonctionne pas tout en ajoutant un seul item après l'autre fonctionne manuellement parce que vous avez oublié d'initialiser votre tableau:

NSMutableArray <AVPlayerItem*> *items = [[NSMutableArray alloc] init]; 

Ajouter la ligne ci-dessus avant d'entrer dans la boucle et AVQueuePlayer devrait fonctionner.

Espérons que cela aide.