2013-06-05 32 views
4

我有這樣的代碼,找到併發揮MPMediaItem在AVAudioPlayer玩:MPMediaItem不使用MPMediaItemPropertyAssetURL

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:self.persistentIDOfSongToPlay 
                      forProperty:MPMediaItemPropertyPersistentID 
                     comparisonType:MPMediaPredicateComparisonContains]; 
NSSet *predicateSet = [NSSet setWithObject:predicate]; 
MPMediaQuery *searchQuery = [[MPMediaQuery alloc] initWithFilterPredicates:predicateSet]; 
NSArray *queryResults = [searchQuery items]; 

NSLog(@"count: %i", queryResults.count); 

MPMediaItem *item = [queryResults objectAtIndex:0]; 

NSLog(@"item: %@", item); 

NSURL *itemURL = [item valueForProperty:MPMediaItemPropertyAssetURL]; 

NSLog(@"url: %@", itemURL); 

NSError *error; 

AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:itemURL error:&error]; 
[audioPlayer prepareToPlay]; 
[audioPlayer play]; 

NSLog(@"error: %@", error); 

我的日誌:

count: 1 
item: <MPConcreteMediaItem: 0x200b0870> 12385304089059716916 
url: ipod-library://item/item.m4a?id=-6061439984649834700 
error: (null) 

但音頻不能播放。我有音量,另一個AVAudioPlayer執行不同的功能,稍後會播放它的音頻。

+0

找到解決方案 - 它需要成爲一個工作屬性。 – Andrew

+0

由於您找到了自己的答案,請刪除您的問題。 – rmaddy

+2

或者更好的是,寫出一個很好的答案,以便其他人可以從中受益。 – Fluffhead

回答

0

必須將AVAudioPlayer聲明爲屬性或伊娃,以便在方法完成後存活。