0

所以这就是我到目前为止所拥有的:

-(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。因此,如果我需要其他任何东西,那么我也可以得到这些。帮忙解决这个?

4

2 回答 2

1

请注意,根据 Apple 的文档:

MPMediaItemPropertyPersistentID 标识符的值在应用程序启动和不更改媒体项同步状态的同步之间保持不变。不保证该值在同步/非同步/同步周期内保持不变。

MPMediaItemPropertyPersistentID我从来没有遇到过这是一个问题的实例,但是自从iOS 3.0 引入以来就是这种情况

于 2012-08-21T18:41:35.060 回答
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];
于 2011-02-07T21:51:03.973 回答