दिलचस्प पोस्ट
एंड्रॉइड कार्यक्रम में एंड कॉल नेस्टेड ऑब्जेक्ट में गहराई से कुंजी के अनुसार खोजें जावा सरणी को मुद्रित करने का सबसे आसान तरीका क्या है? एंड्रॉइड में support.v4 लाइब्रेरी का उपयोग करने के लिए कोई कारण है? java.lang.NoClassDefFound त्रुटि: संगठन / अपाचे / जुली / लॉगिंग / लॉगफैटरी एक चर परिभाषित किया गया है की जाँच कर रहा है? कैसे डिस्क पर छवि के रूप में एक साजिश को बचाने के लिए? आईओएस में jQuery के क्लिक ईवेंट काम नहीं कर रहे हैं वेबपेज को एएसपी.नेट से छवि में कनवर्ट करें InitializeComponent () क्या करता है, और यह WPF में कैसे काम करता है? Var x = नया अर्रे () के साथ गलत क्या है; विंडोज फॉर्म एप्लीकेशन में एप्लीकेशन सेटिंग्स को बचाने के लिए सर्वश्रेष्ठ अभ्यास एसवीजी बिटमैप छवियों का समर्थन एम्बेड करता है? ईजेबी 3.1 @ लोकलबीन बनाम कोई एनोटेशन नहीं requirejs, नियंत्रक के आलसी लोडिंग के साथ कोणीय रूटर-राउटर

शब्दकोशों में कुंजी के मूल्य से शब्दकोशों के NSArray सॉर्ट करना

मेरे पास शब्दकोशों द्वारा आबाद एक सरणी है, और मुझे सरंटा वर्णानुक्रम में शब्दकोषियों की एक कुंजी के मूल्यों को सॉर्ट करने की आवश्यकता है

यह मेरी सरणी है:

tu dictus: ( { brand = Ryul; productTitle = Any; quantity = 1; subBrand = "Ryul INJ"; type = Product; }, { brand = Trol; productTitle = Different; quantity = 2; subBrand = ""; type = Brand; }, { brand = Dtor; productTitle = Any; quantity = 1; subBrand = ""; type = Product; }, { brand = Ryul; productTitle = Different; quantity = 2; subBrand = "Ryul CHES"; type = SubBrand; }, { brand = Anan; productTitle = Any; quantity = 1; subBrand = ""; type = Product; } ) 

आम तौर पर एक सरणी सॉर्ट करने के लिए मैं इसका उपयोग करूँगा

 myArray = [uniqueProdsArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

लेकिन डिक्शनरी के brand का उपयोग कैसे करते हैं?

वेब के समाधान से एकत्रित समाधान "शब्दकोशों में कुंजी के मूल्य से शब्दकोशों के NSArray सॉर्ट करना"

मुझे लगता है कि यह ऐसा करेगा:

 brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"brand" ascending:YES]; sortDescriptors = [NSArray arrayWithObject:brandDescriptor]; sortedArray = [myArray sortedArrayUsingDescriptors:sortDescriptors]; 

मैंने सैंड डिस्क्रिप्टर प्रोग्रामिंग विषय से कोड खींच लिया इसके अलावा, कुंजी-मान कोडन उस sortedArrayUsingDescriptors: में, खेलने में आता है sortedArrayUsingDescriptors: मेरे valueForKey: में प्रत्येक एलीमेंट में एक valueForKey: भेजेंगे, और फिर लौटा मानों को सॉर्ट करने के लिए मानक तुलनित्रों का उपयोग करें।

हम विधि का पालन करके समाधान प्राप्त करते हैं

 [self.jsonData sortUsingDescriptors: [NSArray arrayWithObjects: [NSSortDescriptor sortDescriptorWithKey:"fullname" ascending:YES], [NSSortDescriptor sortDescriptorWithKey:"id" ascending:NO], nil]]; 

कहा पे:-

jsonData – MutableArray जो पारस्परिक JSON डेटा को धारण करता है

fullname – डेटा जिसे हम सॉर्ट करना चाहते हैं

id – एक अनूठा डेटा जो आंतरिक शब्दकोश के साथ आता है

Switf में:

 var descriptor: NSSortDescriptor = NSSortDescriptor(key: "brand", ascending: true) var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor]) 

शब्दकोश से "ब्रांड" कुंजी का उपयोग करके सॉर्ट करने के लिए निम्न कोड का उपयोग करें ..

 NSSortDescriptor * brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"brand" ascending:YES]; NSArray * sortDescriptors = [NSArray arrayWithObject:brandDescriptor]; NSArray * sortedArray = [myArray sortedArrayUsingDescriptors:sortDescriptors]; NSLog(@"sortedArray %@",sortedArray); 

निम्नलिखित कोड का उपयोग करें, यदि आप डिक्शनरी से दो कुंजी के अनुसार सॉर्ट करने के लिए; जैसे, शब्दकोश से "ब्रांड" कुंजी और productTitle कुंजी: –

 NSSortDescriptor * brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"brand" ascending:YES]; NSSortDescriptor * productTitleDescriptor = [[NSSortDescriptor alloc] initWithKey:@"productTitle" ascending:YES]; NSArray * sortDescriptors = [NSArray arrayWithObjects:brandDescriptor, productTitleDescriptor, nil]; NSArray * sortedArray = [feedData sortedArrayUsingDescriptors:sortDescriptors]; NSLog(@"sortedArray %@",sortedArray); 
  arrSorted = [arrBrand sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { if ([[obj1 valueForKey:@"iUserId"] integerValue] > [[obj2 valueForKey:@"iUserId"] integerValue]) { return (NSComparisonResult)NSOrderedDescending; } if ([[obj1 valueForKey:@"iUserId"] integerValue] < [[obj2 valueForKey:@"iUserId"] integerValue]) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; }]; 

QED के कोड के अतिरिक्त,

 NSSortDescriptor * brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"brand" ascending:YES]; NSArray * sortedArray = [myArray sortedArrayUsingDescriptors:@[brandDescriptor]]; 

यह चर की कक्षाओं को स्पष्ट करता है और फास्ट-एन्यूमरेशन के साथ सरणी निर्माण का अनुकूलन करता है। धन्यवाद

मेरा कोड NSSortDescriptor का उपयोग करते समय दुर्घटनाग्रस्त हो रहा NSSortDescriptor इसलिए ब्लॉक का उपयोग करके समाप्त हो गया जो मेरे उपयोग के मामले में बहुत अच्छा काम करता है, जहां मैं "रैंक" को NSSortDescriptor करता हूं। अगर ऑब्जेक्ट को पूर्णांक में परिवर्तित नहीं किया जा सकता है, तो यह सॉर्ट नहीं करेगा, लेकिन यह क्रैश भी नहीं करेगा।

 NSArray *sortedArray = [data sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { long data1 = [[obj1 valueForKey:@"rank"] integerValue]; long data2 = [[obj2 valueForKey:@"rank"] integerValue]; if (data1 > data2) { return (NSComparisonResult)NSOrderedDescending; } if (data1 < data2) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; }]; 
 NSSortDescriptor *brandDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"Position" ascending:YES selector:@selector(localizedStandardCompare:)] autorelease]; NSArray *sortDescriptors = [NSArray arrayWithObject:brandDescriptor]; NSArray *sortedArray = [arrTemp sortedArrayUsingDescriptors:sortDescriptors]; array_PreLagData=(NSMutableArray*)sortedArray; unsorted array Printing description of arrTemp: <__NSArrayM 0x10282100>( { Milker2 = "11:03:17 AM"; Position = 2; }, { Milker1 = "11:03:28 AM"; Position = 25; }, { Milker3 = "11:03:18 AM"; Position = 3; }, { Milker1 = "11:03:16 AM"; Position = 1; Strip = "11:32:32 AM"; }, { Milker1 = "11:03:21 AM"; Position = 10; } ) Sorted array <__NSArrayI 0x101363c0>( { Milker1 = "11:03:16 AM"; Position = 1; Strip = "11:32:32 AM"; }, { Milker2 = "11:03:17 AM"; Position = 2; }, { Milker3 = "11:03:18 AM"; Position = 3; }, { Milker1 = "11:03:21 AM"; Position = 10; }, { Milker1 = "11:03:28 AM"; Position = 25; } ) [enter link description here][1] [1]: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/SortDescriptors/Articles/Creating.html#//apple_ref/doc/uid/20001845-BAJEAIEE 

तुम यह केर सकते हो ।

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"d LLLL yyyy"]; NSComparator compareDates = ^(id string1, id string2) { NSDate *date1 = [formatter dateFromString:string1]; NSDate *date2 = [formatter dateFromString:string2]; return [date1 compare:date2]; }; NSSortDescriptor * sortDesc1 = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO comparator:compareDates]; [array sortUsingDescriptors:[NSArray arrayWithObjects:sortDesc1, nil]]; 

बस सबसे आसान तरीका इसे बाहर की कोशिश करो …

 myArray = [[NSMutableArray alloc] init]; NSMutableArray *tempArray = [[NSMutableArray alloc] init]; [tempArray removeAllObjects]; [tempArray addObjectsFromArray: myArray]; NSString *key = @"brand"; NSSortDescriptor *brandDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:YES]; NSArray *sortDescriptors = [NSArray arrayWithObjects:brandDescriptor,nil]; NSArray *sortedArray = [tempArray sortedArrayUsingDescriptors:sortDescriptors]; [brandDescriptor release]; [tempArray removeAllObjects]; tempArray = (NSMutableArray*)sortedArray; [myArray removeAllObjects]; [myArray addObjectsFromArray:tempArray];