artistsQuery
सुविधा निर्माता सॉर्ट नहीं है और समूह इस लिंक पर और अधिक देखने एल्बम द्वारा। artistsQuery
कलाकार नाम द्वारा क्रमबद्ध रूप से क्रमबद्ध सभी कलाकारों के मीडिया आइटम संग्रह की एक सरणी देता है। प्रत्येक कलाकार संग्रह के अंदर नेस्टेड उस कलाकार के सभी गीतों से जुड़े मीडिया आइटमों की एक श्रृंखला है। नेस्टेड सरणी को गीत शीर्षक द्वारा क्रमबद्ध रूप से क्रमबद्ध किया जाता है।
कलाकार द्वारा एल्बमों की गिनती रखने का एक तरीका प्रत्येक कलाकार संग्रह के लिए सभी गीत वस्तुओं के माध्यम से गिनना है और प्रत्येक गीत से जुड़े विशिष्ट एल्बम शीर्षकों का ट्रैक रखने के लिए NSMutableSet
का उपयोग करना है। फिर NSMutableDictionary
में प्रत्येक कलाकार कुंजी के मान के रूप में सेट की गिनती जोड़ें। किसी भी डुप्लिकेट एल्बम शीर्षक नहीं जोड़ा जाएगा के बाद से एक NSMutableSet
केवल विभेदित ऑब्जेक्ट्स ले जाएगा:
MPMediaQuery *artistQuery = [MPMediaQuery artistsQuery];
NSArray *songsByArtist = [artistQuery collections];
NSMutableDictionary *artistDictionary = [NSMutableDictionary dictionary];
NSMutableSet *tempSet = [NSMutableSet set];
[songsByArtist enumerateObjectsUsingBlock:^(MPMediaItemCollection *artistCollection, NSUInteger idx, BOOL *stop) {
NSString *artistName = [[artistCollection representativeItem] valueForProperty:MPMediaItemPropertyArtist];
[[artistCollection items] enumerateObjectsUsingBlock:^(MPMediaItem *songItem, NSUInteger idx, BOOL *stop) {
NSString *albumName = [songItem valueForProperty:MPMediaItemPropertyAlbumTitle];
[tempSet addObject:albumName];
}];
[artistDictionary setValue:[NSNumber numberWithUnsignedInteger:[tempSet count]]
forKey:artistName];
[tempSet removeAllObjects];
}];
NSLog(@"Artist Album Count Dictionary: %@", artistDictionary);
यह क्लीनर यदि आप albumsQuery
करने के लिए क्वेरी को बदलने होगा। यह क्वेरी समूह और एल्बम नाम से संग्रह को व्यवस्थित करता है। तो फिर यह एल्बम संग्रह में से सरणी के माध्यम से गणना और एक NSCountedSet
में प्रत्येक एल्बम के लिए प्रतिनिधि कलाकार का नाम की गिनती रखने का सिर्फ एक मामला है। गिना सेट ट्रैक करेगा बार वस्तुओं की संख्या डाला जाता है:
MPMediaQuery *albumQuery = [MPMediaQuery albumsQuery];
NSArray *albumCollection = [albumQuery collections];
NSCountedSet *artistAlbumCounter = [NSCountedSet set];
[albumCollection enumerateObjectsUsingBlock:^(MPMediaItemCollection *album, NSUInteger idx, BOOL *stop) {
NSString *artistName = [[album representativeItem] valueForProperty:MPMediaItemPropertyArtist];
[artistAlbumCounter addObject:artistName];
}];
NSLog(@"Artist Album Counted Set: %@", artistAlbumCounter);
तुम भी गिनती एक दिया वस्तु के लिए एक NSCountedSet
में countForObject:
विधि के साथ प्राप्त कर सकते हैं।
स्रोत
2012-06-14 00:22:52
यह काम पूरी तरह से है !! आपका बहुत बहुत धन्यवाद !! – Jonathan