2011-02-07 132 views
0

所以这是我到目前为止有:需要将iPod中的歌曲存储在NSUserDefaults中。几乎想通了,虽然需要帮助到达那里?

-(void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { 

    [self dismissModalViewControllerAnimated:YES]; 
    // Assign the selected item(s) to the music player and start playback. 
self.selectedSong = mediaItemCollection; 

    MPMediaItem *chosenItem = mediaItemCollection.representativeItem; 
    NSLog(@"chosenItem: %@", chosenItem); 
    persistentID = [chosenItem valueForProperty:MPMediaItemPropertyPersistentID]; //persistentID is an NSString. 
    NSLog(@"persistentID: %@", persistentID); 
    [prefs setValue:persistentID forKey:@"persistentIDKey"]; 
    [prefs synchronize]; 

}

但现在我需要弄清楚要放什么,我想它检索到的脚本的一部分。这将是标准的做法..

[self.musicPlayer stop]; 
[self.musicPlayer setNowPlayingItem:*ITEM HERE*]; 
[self.musicPlayer play]; 

但我不确定放在那里。持久性ID不起作用。我也可以使用上面的方法从歌曲中获得其他任何属性,而不仅仅是persistentID。所以如果我需要其他人,那么我也可以得到这些人。帮助这个?

回答

1

你应该能够做这样的事情:

MPMediaPropertyPredicate * predicate = [MPMediaPropertyPredicate predicateWithValue:storedPID forProperty: MPMediaItemPropertyPersistentID]; 
MPMediaQuery * query = [[MPMediaQuery alloc] initWithFilterPredicates: [NSSet setWithObject: predicate]]; 
[self.musicPlayer setQueueWithQuery:query]; 
[self.musicPlayer play]; 
[query release]; 
+0

推出试了一下我的闹钟和工作的情况。 +1 – 2012-01-16 18:32:17

1

要知道,按照苹果的文档:

的MPMediaItemPropertyPersistentID标识符的值在应用程序启动持续和跨越同步的是请勿更改媒体项目的同步状态。 该值不保证在同步/非同步/同步周期内持续存在。

我从来没有碰到过这样的情况:这一直是一个问题,但是这一直以来MPMediaItemPropertyPersistentID在iOS 3.0