iPhone SDK, сохранить MPMediaItemCollection? - PullRequest
6 голосов
/ 17 ноября 2009

У меня в приложении отображается MPMediaPickerController. Я хотел бы сохранить MediaItem и снова запустить его при запуске. Я думаю, что это выполнимо, используя MPMediaQuery. Кажется, я должен использовать MPMediaItemPropertyPersistentID, но я не уверен, как запросить его. Есть мысли?

Ответы [ 2 ]

11 голосов
/ 19 ноября 2010

Человек, вам не нужно сохранять 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 голосов
/ 19 ноября 2009

Это должно работать:

MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID];

[query addFilterPredicate:predicate];
NSArray *songs = [query items];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...