我正在使用以下代码循环播放iPhone音乐库中的所有歌曲:
NSArray * songs = [[NSArray alloc] initWithArray:[[MPMediaQuery songsQuery] collections]];
for (MPMediaItemCollection * item in songs){
NSString * persistentID = [[[item representativeItem] valueForProperty:MPMediaItemPropertyPersistentID] stringValue];
// Do something with it.
}
[songs release];
Run Code Online (Sandbox Code Playgroud)
很基本的东西.
我将PersistentID作为一个NSString
因为我需要将其写入XML文件(通过网络传输到另一个设备).因此,我不能把它留作一个NSNumber
.
然后另一个设备将通过再次发送PersistentID来要求iPhone播放曲目.
此时,iPhone有一个NSString
应该播放的轨道的PersistentID.
再次循环播放每首歌曲并比较PersistentID直到我找到我想要的曲目将会很简洁,所以我试图用MPMediaPropertyPredicate
iPhone来搜索我.
我正在使用以下代码进行搜索:
MPMediaPropertyPredicate * predicate = [MPMediaPropertyPredicate predicateWithValue:persistentID forProperty:MPMediaItemPropertyPersistentID];
MPMediaQuery * songsQuery = [[MPMediaQuery alloc] init];
[songsQuery addFilterPredicate:predicate];
if ([[songsQuery items] count]){
MPMediaItem * item = [[songsQuery items] objectAtIndex:0];
// Play item.
}
[songsQuery release];
Run Code Online (Sandbox Code Playgroud)
哪里 …