2016-03-14 7 views
0

Я поставил его туда, где музыка может быть отправлен туда и обратно между устройствами IOS, но всякий раз, когда музыка передается, принимающий телефон получает эту ошибку:Передача музыки в прошивкой через Bluetooth

*** Terminating app due to uncaught exception 'MPMediaItemCollectionInitException', reason: 'items array must not be empty' *** First throw call stack:

Это метод, в котором я получаю сообщение об ошибке:

-(void)didReceiveDataWithNotification: (NSNotification *)notification{ 
    MCPeerID *peerID = [[notification userInfo] objectForKey:@"peerID"]; 
    NSString *peerDisplayName = peerID.displayName; 
    NSData *receivedData = [[notification userInfo] objectForKey:@"data"]; 
    //NSLog([[notification userInfo] objectForKey:@"data"]); 
    NSDictionary *dict = (NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:receivedData]; 
    NSString *datatype = [dict objectForKey:@"datatype"]; 
    NSLog(@"hi"); 
    if([datatype isEqualToString:@"musiclist"]){ 
     count++; 
     MPMediaItemCollection *collectionFromPeer = [[MPMediaItemCollection alloc] initWithItems:[(MPMediaItemCollection*)[dict objectForKey:@"data"] items]]; 
     [_listOfMusic addObjectsFromArray:[collectionFromPeer items]]; 
     if(count == [[_appDelegate.mcManager.session connectedPeers] count] + 1){ 
      for(int i=0;i<[_listOfMusic count];i++){ 
       int r1 = arc4random() % [_listOfMusic count]; 
       int r2 = arc4random() % [_listOfMusic count]; 
       [_listOfMusic exchangeObjectAtIndex:r1 withObjectAtIndex:r2]; 
      } 
      MPMediaItemCollection *coll = [[MPMediaItemCollection alloc]initWithItems:_listOfMusic]; 
      [_musicPlayer setQueueWithItemCollection:coll]; 
      NSLog(@"hi3"); 
      [_musicPlayer play]; 
     } 
    } 
} 

Что не так с этим или что вызывает эту ошибку?

+0

Какое из двух вызовов 'initWithItems:' не работает? Какую отладку вы сделали, чтобы убедиться, что 'dict' содержит данные, которые ваш код предполагает? – rmaddy

+0

@rmaddy Он не работает и выбрасывает эту ошибку при назначении dict – user2537376

+0

С другой стороны кода, когда я отправляю данные, я распечатываю данные, которые он отправляет, прямо перед отправкой, и это правильные данные перед этим отправляется – user2537376

ответ

0

Проверьте две точки, которые могут вызвать проблему:
Первый: где _listOfMusic init?
Два: откуда вы знаете, [dict objectForKey:@"data"] - это массив и элементы?

+0

_listOfMusic инициализируется в методе viewDidLoad ViewController – user2537376

+0

и [dict objectForKey: @ "data"] - это конкретный массив, который я создал, когда я действительно отправляю данные через фреймворк MultipeerConnectivity, поэтому он определенно является массивом и у него есть предметы прямо перед отправкой – user2537376