2010-07-16 18 views
1

En travaillant sur ma nouvelle application appelée Covered, et j'ai remarqué un problème. Je l'utilise comme ceci:MPMediaQuery albumsQuery problem

query = [[MPMediaQuery albumsQuery] retain]; [query setGroupingType: MPMediaGroupingAlbum];

Chose très simple, mais après la connexion et voir les résultats, j'ai remarqué qu'il cache/ignore tous les albums qui n'ont pas de noms. Y'a t'il un moyen d'arranger cela? Est-ce que quelqu'un d'autre a connu ce problème? Faites-moi savoir;)

+0

Lorsque vous appelez + albumQuery, le type de regroupement est automatiquement défini sur MPMediaGroupingAlbum. – sharvey

Répondre

0

Avait le même problème. Par exemple, j'ai essayé de tous les albums (y compris la vidéo) en utilisant quelque chose comme ce code

MPMediaQuery *query = [[MPMediaQuery alloc] init]; 
[query setGroupingType: MPMediaGroupingAlbum]; 
collections = [query collections]; 

mais comme vous l'avez dit, il manquait les éléments qui ne pas eu d'information sur l'album. Ma solution consistait à reconstruire moi-même les collections d'albums:

MPMediaQuery *query = [[MPMediaQuery alloc] init]; 
NSArray* a = [query items]; 
NSMutableArray* lc = [NSMutableArray array]; 
for (MPMediaItem* mp in a) { 
    NSString* atitle=[mp valueForProperty:MPMediaItemPropertyAlbumTitle]; 

    NSMutableArray* found = nil; 
    for (NSMutableArray*l in lc) { 
     NSString* ltitle=[l[0] valueForProperty:MPMediaItemPropertyAlbumTitle]; 

     if ((!atitle && !ltitle) || [atitle isEqualToString:ltitle]) { 
      found = l; 
      break; 
     } 
    } 
    if (found) { 
     [found addObject:mp]; 
    } else { 
     [lc addObject:[NSMutableArray arrayWithObject:mp]]; 
    } 
} 
NSMutableArray* lcc = [NSMutableArray array]; 
for (NSMutableArray*l in lc) 
    [lcc addObject:[MPMediaItemCollection collectionWithItems:l]]; 
collections = [NSArray arrayWithArray:lcc];