iphone - How to sort an NSArray of known objects such that the FIRST record is ensured to be equal to a known object? -


अगर मेरे पास एक वस्तु और सेटअप है जैसे:

  MyObject * objectOne = .. ..; NSArray * arrayOfMyObjects = [self.someObject valueForKey = @ "myObjects"] सभी ऑब्जेक्ट्स];   

जहां valueForKey = @ "ऑब्जेक्ट्स" MyObject प्रकारों के एक NSMutableSet है,

मैं कैसे निश्चित रूप से (या कम से कम यह सुनिश्चित करने का प्रयास) कि objectOne के बराबर है
[arrayOfMyObjects objectAtIndex: 0] ?

असल में यह सुनिश्चित करना कि NSArray का पहला ऑब्जेक्ट मुझे एक ज्ञात वस्तु के बराबर है? यह एक UITableView के प्रयोजनों के लिए है और यह सुनिश्चित कर रहा है कि शीर्ष सबसे अधिक अभिलेख वस्तुऑन है जब यह लोड होता है?

मुझे लगता है कि कुछ प्रकार के विवरणकारियों की कपट आवश्यक है, लेकिन यह निश्चित नहीं है वाक्यविन्यास?

धन्यवाद!

आप यह सुनिश्चित करने के लिए एक तुलनित्र ब्लॉक का उपयोग कर सकते हैं यह पहला है: <पूर्व> MyObject * objectOne; NSArray * सरणी = [[self.someObject valueForKey: @ "myObjects"] सभी ऑब्जेक्ट्स]; NSArray * sortedArray = [सरणी क्रमबद्धअरेयूउज़िंगकंपारेटर: ^ (आईडी obj1, id obj2) {यदि (obj1 == objectOne) रिटर्न (एनएससीम्परिजनरिसल्ट) NSOrderedAscending; यदि (obj2 == objectOne) रिटर्न (एनएससीम्परियंस रेज़ल्ट) एनएसओर्डर्ड डिसेन्डींग; रिटर्न (एनएससीओपरपरियन रिजल्ट) एनएसओर्डडेड; }];

रिटर्न पर टाइपकास्ट गलत तर्क प्रकारों के लिए संकलक चेतावनी को निकालना है। एनएसओर्डर्ड ... प्रकार के enum _NSComparisonResult हैं, और विधि को एनएससीसमपैर की उम्मीद है, जिसे NSComparisonResult ^ (id obj1, id obj2) के रूप में परिभाषित किया गया है , लेकिन NSComparisonResult और enum _NSComparisonResult समान नहीं हैं।

Comments