Intereting Posts
IOS के अनुप्रयोग को कस्टमाइज़ करना: didFinishLaunchingWithOptions: कॉर्डोवा / आयनिक प्रोजेक्ट में विधि UITextView सामग्री का आकार बहुत छोटा है कोर-प्लॉट में एक्स-एक्सिस (क्षैतिज) स्क्रॉल सक्षम करें UIActivityIndicator को UITableView में जोड़ना गायब यूआईटीफ़ेस्टफिल्ड पाठ IOS 9 का उपयोग करते समय यूआईटीएबल के अनुभाग हेडर पर UIButtons पर आग लगाने के लिए टच इवेंट्स प्राप्त करने में असमर्थ (IOS10 ठीक है) IOS में ट्विटर फ़्रेमवर्क से ट्विटर हैंडल प्राप्त करना मैं अद्वितीय पहचानकर्ता को CFUUIDCreate के साथ कैसे बदल सकता हूँ? CFBundleDocumentTypes का उपयोग करना: "साझा करें" मेनू में मेरा ऐप क्यों दिखाई नहीं देता? PrefixHeader.pch फ़ाइल हेडर नहीं मिल सकता है बीटा आईओएस में अपग्रेड करना कितना सुरक्षित है, फिर से डाउनग्रेड करें? कैसे iphone में प्रमुख घटनाओं को संभालने के लिए Xcode 4.6 XXX अपडेट के बाद ZXing संकलन त्रुटि (4 एच 127) MKMapView – एनोटेशन को ऐप दुर्घटना का कारण बनता है ब्लाकों में स्वयं का संदर्भ गिनती

आईओएस में अंतिम खेलने के समय के अनुसार क्रमबद्ध गीतों की सूची पुनर्प्राप्त करें

मुझे एक आईओएस डिवाइस से हाल ही में खेले जाने वाले गाने की सूची प्राप्त करने की आवश्यकता है।

एकमात्र तरीका मैं इसे करने की कल्पना कर सकता हूं, इस समय, सभी गीतों को एक MPMediaQuery माध्यम से प्राप्त कर MPMediaQuery और उन्हें lastPlayedDate द्वारा मैन्युअल रूप से सॉर्ट किया जाता है।

यह एक संभावित महंगे ऑपरेशन है और मैं सोच रहा था कि बेहतर दृष्टिकोण था।


संपादित करें: कुछ परीक्षणों के बाद, यह एक बहुत महंगा ऑपरेशन है 2500 गीतों की एक परीक्षण पुस्तकालय में, इसमें लगभग 20 सेकंड लग गए:

  1. सभी गाने प्राप्त करें
  2. सभी गीतों को एक तारीख नियुक्त करें जो कभी नहीं खेला (जनवरी 1 1 9 70)।
  3. उन्हें तिथि के अनुसार आदेश दें
  4. पहली एन प्रविष्टियां प्राप्त करें

सुधार के किसी भी सुझाव की सराहना की जाएगी।


संपादित करें 2: अब हल, लेकिन सिर्फ रिकॉर्ड के लिए मैं क्या कर रहा था।

मैं यहां बताए अनुसार ब्लॉक का इस्तेमाल कर रहा था: https://stackoverflow.com/a/805589/112702 बस ब्रायन के उत्तर में जो सॉर्टिंग विधि को बदल रहा है, मेरी गति में आइपॉड टच 3 पर लगभग 20 बार सुधार हुआ।

Solutions Collecting From Web of "आईओएस में अंतिम खेलने के समय के अनुसार क्रमबद्ध गीतों की सूची पुनर्प्राप्त करें"

एक तरह से MPMediaItem की सरणी को ले जाना है जो आपको MPMediaQuery से प्राप्त होता है और इसे MPMediaItemPropertyLastPlayedDate द्वारा MPMediaItemPropertyLastPlayedDate का उपयोग करके सॉर्ट करना है:

 NSTimeInterval start = [[NSDate date] timeIntervalSince1970]; MPMediaQuery *songsQuery = [MPMediaQuery songsQuery]; NSArray *songsArray = [songsQuery items]; NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:MPMediaItemPropertyLastPlayedDate ascending:NO]; NSArray *sortedSongsArray = [songsArray sortedArrayUsingDescriptors:@[sorter]]; NSTimeInterval finish = [[NSDate date] timeIntervalSince1970]; NSLog(@"Execution took %f seconds.", finish - start); 

यह हाल ही में पहली बार खेला गया नया सरणी है। मैंने यह परीक्षण एक iPhone 4 एस पर 2000 गाने का प्रयोग किया और इसे लिया .98 सेकंड्स।

मुझे लगता है कि MPMediaQuery इस समय एक आईओएस डिवाइस से हाल ही में खेले गाने प्राप्त करने का एकमात्र तरीका है।

आप संपत्ति MPMediaItemPropertyLastPlayedDate उपयोग कर सकते हैं जो आपको सबसे हाल ही की कैलेंडर तारीख और समय देगा जिस पर उपयोगकर्ता ने मीडिया आइटम खेला था। मान एक NSDate वस्तु है

http://developer.apple.com/library/IOs/#documentation/MediaPlayer/Reference/MPMediaItem_ClassReference/Reference/Reference.html#//apple_ref/doc/constant_group/General_Media_Item_Property_Keys