NSNumber for MPMediaItemPropertyPersistentID to NSString e vice-versa
Estou percorrendo todas as músicas da biblioteca de músicas de um iPhone usando o seguinte código:
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];
Coisas bem básicas.
Estou recebendo o PersistentID como umNSString
porque preciso gravá-lo em um arquivo XML (para transmissão em uma rede para outro dispositivo). Daí a razão de eu não poder simplesmente deixá-lo como umNSNumber
.
O outro dispositivo solicitará que o iPhone reproduza uma faixa transmitindo o PersistentID novamente.
Neste ponto, o iPhone tem umNSString
do PersistentID da faixa que ele deve reproduzir.
Seria complicado percorrer todas as músicas novamente e comparar os IDs persistentes até encontrar a faixa que desejo, então estou tentando usar oMPMediaPropertyPredicate
para que o iPhone me procure.
Estou usando o seguinte código para a pesquisa:
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];
OndepersistentID
é oNSString
de mais cedo.
Estranhamente, isso funciona para algumas músicas, não para outras. ou seja, às vezes oitems
matriz não está vazia, mesmo que eu esteja passando umNSString
, não umNSNumber
.
Gostaria de saber se existe uma maneira de converter meuNSString
de volta aoNSNumber
veio e como eu posso fazer isso.
ATUALIZAR: Eu tentei o NSNumberFormatter, também tentei algo como:
[NSNumber numberWithFloat:[persID floatValue]];
Eu tentei todas as maneiras padrão de fazê-lo sem prevalecer.