2012-11-06 11 views
7

Używam Apple Media Player Framework w mojej aplikacji. Aby pobrać elementy, używam MPMediaQuery zgodnie z opisem w ich dokumentach. Który działa dobrze, ale kiedy używasz predefiniowanego zapytania do pobrania wszystkich artystów, otrzymuję zduplikowane wpisy dla kilku artystów.MPMediaQuery artistsQuery zwraca duplikaty

Czy ktoś może wyjaśnić, dlaczego istnieją duplikaty? Jak je tłumić?

NSArray *collections = [[MPMediaQuery artistsQuery] collections]; 

(I żaden nie ma żadnych literówek lub różnice w obudowie w imieniu artysty!)

+0

Na początek, nie może być pewne, że meta powoduje powielania. Jednak, aby to potwierdzić, jak utworzyć NSSet za pomocą NSArray, który automatycznie usunie wszystkie duplikaty? 'NSSet * uniqueArtists = [NSSet setWithArray: collections];'. Sprawdź, czy to usunie duplikaty. W przeciwnym razie musi istnieć coś, co spowoduje, że artyści będą duplikować pomimo tego samego nazwiska artysty. –

+0

Niestety, nie jest to możliwe, ponieważ chcę również korzystać z funkcji sekcji w MPMediaQuery. Tak, ale byłoby interesujące dowiedzieć się, jakie rodzaje metadanych je duplikują i jak zapobiegać. – miho

+0

Czy widzisz tych samych duplikatów wykonawców w aplikacji muzycznej na karcie Wykonawcy? – Felix

Odpowiedz

4

Zauważyłem, że to nastąpi tylko wtedy, gdy są albumy z wieloma artystami .

Zamiast [MPMediaQuery artistQuery] następujące udaje to zachowanie:

MPMediaQuery *artistsQuery = [MPMediaQuery artistsQuery]; 
artistsQuery.groupingType = MPMediaGroupingAlbumArtist; 
NSArray *collections = [artistQuery collection];