2010-12-16 19 views
10

द्वारा NSManagedObjects की एक NSSet छंटाई एक NSSet है कि वस्तुओं कि एक स्ट्रिंग विशेषता name कहा जाता है के साथ एक उपवर्ग NSManagedObject होते देखते हुए, मैं नाम से सेट कैसे सॉर्ट कर सकते हैं? क्या यह मैं NSPredicate का उपयोग करूंगा?विशेषता

धन्यवाद!

+2

मुझे ठीक कर लें मैं मैं गलत हूं, लेकिन मेरा मानना ​​है कि 'एनएसएसएटी' अनियंत्रित है, जिसका अर्थ है कि निहित तत्व किसी विशेष क्रम (अवधारणात्मक रूप से बोलने वाले) में नहीं हैं, जिसका अर्थ है कि 'एनएसएससेट' को हल नहीं किया जा सकता है। आप ऑब्जेक्ट्स को 'एनएसएआरएआरई' में डाल सकते हैं, जिसे ऑर्डर किया गया है और सॉर्ट किया जा सकता है। – filipe

+1

ऐसा लगता है कि ओपी क्या पूछ रहा है ... –

उत्तर

33

नहीं, लेकिन आप NSSortDescriptor का उपयोग करेंगे।

आप sortedArrayUsingDescriptors: विधि इस तरह का उपयोग करेंगे:

NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
NSArray *sorted = [yourSet sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameDescriptor]]; 
+0

धन्यवाद! क्या स्मृति प्रबंधन के लिए इन्हें जारी करने की आवश्यकता होगी? –

+0

@ बिल 'क्रमबद्ध' सरणी स्वत: बंद है, तो नहीं। –

+0

और यदि मैं \t एनएसएसएटी (सरणी: <# [AnyObject] #>) द्वारा क्रमबद्ध एनएसएआरएआरई से एनएसएससेट बनाते हैं, तो क्या यह ऑर्डर जारी रखेगा? – BaSha

5

NSPredicate उल्लेख करके, मैं के रूप में यद्यपि ओपी निष्पादित लाने के हिस्से के रूप सेट सॉर्ट करने के लिए चाहता था लग रहा है। चाहे वह इसका मतलब हो या नहीं, यहां इसका एक उदाहरण है। मान लें कि आपके पास कर्मचारी इकाई और एक विभाग इकाई के बीच कई विपरीत संबंध हैं यानी एक विभाग में कई कर्मचारी हैं। को देखते हुए आप विभाग पहले से ही दिलवाया गया है, विभाग में कर्मचारियों को लाने और पहले नाम से उन्हें क्रमबद्ध करें:

का उपयोग MagicalRecord:

Department *department = someFetchedDepartment; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"department == %@", department]; 
NSArray *sortedEmployees = [Employee MR_findAllSortedBy:@"firstName" ascending:YES withPredicate:predicate]; 

MagicalRecord के बिना:

NSFetchRequest *request = [[NSFetchRequest alloc] init];  

NSEntityDescription *employeeEntity = [NSEntityDescription @"Employee" inManagedObjectContext:self.context]; 
[request setEntity:employeeEntity]; 

Department *department = someFetchedDepartment; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"department == %@", department]; 
[request setPredicate:predicate]; 

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:ascending]; 
[request setSortDescriptors:@[sortDescriptor]]; 

NSError *error = nil; 
NSArray *sortedEmployees = [self.context executeFetchRequest:request error:&error]; 
+0

जादुई रिकॉर्ड ??? –

+0

जादुई रिकॉर्ड: https://github.com/magicalpanda/MagicalRecord। ओपी वास्तव में इसे तीसरे पक्ष के समाधान के रूप में इंगित करना चाहिए था। – Demitri

संबंधित मुद्दे