【问题标题】:Play iPod playlist retrieved from a saved persistentid list播放从保存的 persistentid 列表中检索到的 iPod 播放列表
【发布时间】:2011-04-18 12:15:28
【问题描述】:

我保存了使用媒体选择器选择的歌曲的持久 ID,现在我正在尝试创建队列以播放该列表,但这段代码有问题:

myPlayer = [MPMusicPlayerController applicationMusicPlayer];

    NSMutableArray *canzonilist = [[[NSMutableArray alloc] initWithCapacity:1] retain];
    NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"listaCanzoni"];
    NSArray *decodedData = [NSKeyedUnarchiver unarchiveObjectWithData:data];
    [canzonilist addObjectsFromArray:decodedData];

    MPMediaQuery *songQuery = [MPMediaQuery songsQuery];
    for (int i = 0; i > [canzonilist count]; i++) {
        [songQuery addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:[canzonilist objectAtIndex:i] forProperty:MPMediaItemPropertyPersistentID]];
    }
    NSArray *songs = [songQuery items];
    MPMediaItemCollection *currentQueue = [[MPMediaItemCollection alloc] initWithItems:songs];

    if (currentQueue != nil) {    
        [myPlayer setQueueWithItemCollection:currentQueue];
    } else {
        [myPlayer setQueueWithQuery: [MPMediaQuery songsQuery]];
    }

    [myPlayer play];
    [canzonilist release];
    [currentQueue release];

谢谢

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    终于找到了解决办法:

    保存:

        - (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];
    
    
    
    }
    

    加载

    - (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
    
         }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多