Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 需要将iPod中的歌曲存储在NSUserDefault中。差点就搞定了,需要帮忙吗?_Iphone_Objective C_Cocoa Touch_Mpmusicplayercontroller - Fatal编程技术网

Iphone 需要将iPod中的歌曲存储在NSUserDefault中。差点就搞定了,需要帮忙吗?

Iphone 需要将iPod中的歌曲存储在NSUserDefault中。差点就搞定了,需要帮忙吗?,iphone,objective-c,cocoa-touch,mpmusicplayercontroller,Iphone,Objective C,Cocoa Touch,Mpmusicplayercontroller,这就是我到目前为止所做的: -(void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection { [self dismissModalViewControllerAnimated:YES]; // Assign the selected item(s) to the music player and s

这就是我到目前为止所做的:

-(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。因此,如果我需要任何其他的,那么我也可以得到这些。这方面的帮助?

您应该能够执行以下操作:

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

请注意,根据苹果的文档:

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

我从来没有遇到过这样的问题,但是自从iOS 3.0中引入了
mpMediaItemPropertyTypersistentId
以来,情况就是这样