NSNumber для MPMediaItemPropertyPersistentID в NSString и обратно

Я просматриваю все песни из музыкальной библиотеки 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];

Довольно простые вещи.

I ' m получить PersistentID как NSString , потому что мне нужно записать его в файл XML (для передачи по сети на другое устройство). По этой причине я не могу просто оставить его как NSNumber .

Другое устройство затем попросит iPhone воспроизвести трек, снова передав PersistentID.

На этом этапе, у 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];

Где persistentID - это NSString из ранее.

Как ни странно, это работает для некоторых песен, но не для других. т.е. иногда массив items не пуст, даже если я передаю NSString , а не NSNumber .

Мне интересно, есть ли способ конвертировать мою NSString обратно в NSNumber , откуда он пришел, и как я могу это сделать.

UPDATE : Я пробовал NSNumberFormatter, я ' Я также пробовал что-то вроде:

[NSNumber numberWithFloat:[persID floatValue]];

Я пробовал все стандартные способы сделать это, но без особого успеха.

5
задан Tom Irving 18 January 2011 в 18:51
поделиться