Play iPod playlist retrieved from a saved persistentid list

前端 未结 1 2087
难免孤独
难免孤独 2020-12-15 11:24

I saved the persistent ID of the songs selected with media picker, now I\'m trying to crate the queue to play that list but something is wrong in this code:

         


        
相关标签:
1条回答
  • 2020-12-15 12:03

    Finally I found the solution:

    SAVE:

        - (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
    
        [self savePlaylist:mediaItemCollection];
    
        [self dismissModalViewControllerAnimated: YES];
    
    }
    
    - (void)savePlaylist:(MPMediaItemCollection *) mediaItemCollection {
    
        NSArray* items = [mediaItemCollection items];
    
        NSMutableArray* listToSave = [[NSMutableArray alloc] initWithCapacity:0];
    
        for (MPMediaItem *song in items) {
    
            NSNumber *persistentId = [song valueForProperty:MPMediaItemPropertyPersistentID];
    
            [listToSave addObject:persistentId];
    
        }
    
        NSData *data = [NSKeyedArchiver archivedDataWithRootObject: listToSave];
    
        [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"songsList"];
    
        [[NSUserDefaults standardUserDefaults] synchronize];
    
        [listToSave release];
    
    
    
    }
    

    LOAD

    - (void)setupMusic {
    
         myPlayer = [MPMusicPlayerController applicationMusicPlayer];
    
         if ([[NSUserDefaults standardUserDefaults] objectForKey:@"songsList"] != nil) {
    
             NSMutableArray *theList = [[NSMutableArray alloc] initWithCapacity:0];
    
             NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"songsList"];
    
             NSArray *decodedData = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    
             [theList addObjectsFromArray:decodedData];
    
             NSMutableArray *allTheSongs = [[NSMutableArray alloc] initWithCapacity:0];
    
             for (int i = 0; i < [theList count]; i++) {
    
                 MPMediaQuery *songQuery = [MPMediaQuery songsQuery];
    
                 [songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[theList objectAtIndex:i] forProperty:MPMediaItemPropertyPersistentID]];
    
                 NSArray *songs = [songQuery items];
    
                 [allTheSongs addObjectsFromArray: songs];
    
             }
    
             MPMediaItemCollection *currentQueue = [[MPMediaItemCollection alloc] initWithItems:allTheSongs];
    
             [myPlayer setQueueWithItemCollection:currentQueue];
    
             [theList release];
    
             [currentQueue release];
    
             [allTheSongs release];
    
        } else {
    
            [myPlayer setQueueWithQuery: [MPMediaQuery songsQuery]];
    
            [myPlayer setShuffleMode: MPMusicShuffleModeSongs]; //optional
    
         }
    
    }
    
    0 讨论(0)
提交回复
热议问题