내 응용 프로그램에 MPMediaPickerController
을 표시하도록했습니다. MediaItem
을 저장하고 시작시 다시 재생하고 싶습니다. 나는 이것이 MPMediaQuery
을 사용하여 가능하다고 생각한다. 그것은, 내가 MPMediaItemPropertyPersistentID
사용해야하지만, 나는 그것을 위해 쿼리하는 방법을 잘 모르겠습니다 보인다. 이견있는 사람?iPhone SDK, MPMediaItemCollection을 (를) 저장 하시겠습니까?
6
A
답변
11
남자, 당신은 mediaCollection을 저장할 필요 없어요. 미디어 컬렉션 MPMediaItem 개체의 배열입니다. 따라서이 항목의 영구 식별자를 저장하는 것이 좋습니다. 아주 쉬워.
//it's how to know persistentId of the song after you got mediaItemCollection from your mediaPickerViewController
//then you can sav it in userDefaults.
- (NSNumber *)getPersistentId :(MPMediaItemCollection *)collection atIndex:(int)index {
MPMediaItem *mediaItem = [collection.items objectAtIndex:index];
NSNumber *anId = [mediaItem valueForProperty:MPMediaItemPropertyPersistentID];
return anId;
}
//when your application will be launched next time you can get required song:
- (void)obtainSongWitId:(NSNumber *)persistentId {
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:persistentId forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *mediaItems = [query items];
//this array will consist of song with given persistentId. add it to collection and play it
MPMediaItemCollection *col = [[MPMediaItemCollection alloc] initWithItems:mediaItems];
///....
[col release];
}
6
이 작동합니다 :
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *songs = [query items];
당신은 그것을 죽였다! –
이 하나의 MPMediaItem을 MPMediaItemCollection으로 래핑하는 데 필요합니까? – surfrider