2016-12-17 7 views
0

line in 루프를 사용하여 다른 배열의 AVPlayerItem 개체 배열을 만들고 싶습니다. 단일 항목에 대해서는 작동하지만 전체 배열에 대해서는 작동하지 않습니다.iOS - 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]; 

그래서, 내 문제는 내가 제대로으로하고 배열 AVQueuePlayer를 초기화 할 수 있다는 것입니다 그리고 그것은 나를 미치게 운전입니다. InitWithPlayerItem으로 초기화하고 만든 항목을 추가하면 작동 (재생)되지만 items 배열의 모든 개체에서 작동하지 않습니다.

InitWithItems:items[index*]을 호출해도 아무 일도 일어나지 않습니다.

답변

1

코드가 작동합니다.

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

당신이 당신의 루프를 입력하고 AVQueuePlayer 일을해야하기 전에 위의 라인을 추가 : 당신이 당신의 배열을 초기화 할 잊어 버린 때문에 다른 작업 후 수동으로 하나의 item를 추가하는 동안 작동하지 않습니다 AVQueuePlayeritems를 추가하는 이유입니다.

희망이 도움이됩니다.