NSDictionary
anahtarını temel alarak alabilir miyim?NSDictionary öğesini Objective-C'deki anahtar temeline göre sıralayabilir miyim?
cevap
Anahtarları sıralamak ve daha sonra üzerlerine yineleme tarafından NSMutableArray
oluşturabilirsiniz.
NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(compare:)];
NSMutableArray *sortedValues = [NSMutableArray array];
for (NSString *key in sortedKeys)
[sortedValues addObject: [dict objectForKey: key]];
Cevabınızı cevabımda http://stackoverflow.com/a/13406407/257533 –
için kullandım. Bu doğru bir cevap mı, değil mi? oy çok var, ama kabul etmiyor musunuz? –
Doğru cevap budur. Ne yazık ki, kolay bir yöntem (iOS 7'de) [Sözlük keysSortedByValueUsingSelector: @selector (karşılaştırın :)] 'çalışmıyor. Bir sebepten ötürü, neredeyse sırayla rastgele sonuçlar veriyor. 'KeysSortedByValueUsingSelector:' dizinin son değerine dayanarak diziye eklendiği bir şey yapıp yapmadığını merak ediyorum. – mikeho
Cevabın size doğru bilgi vermek muydunuz
NSDictionary *yourDictionary;
NSArray *sortedKeys = [yourDictionary.allKeys sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES]]];
// As we using same keys from dictionary, we can put any non-nil value for the notFoundMarker, because it will never used
NSArray *sortedValues = [yourDictionary objectsForKeys:sortedKeys notFoundMarker:@""];
için
objectsForKeys:notFoundMarker:
kullanmak çok daha kolaydır? Belki de bunu cevap olarak işaretleyebilirsiniz, böylece bu soru çözülecek olarak işaretlenecektir. –