Nasıl özel nesneler ile bir NSMutableArray sıralamak için?
Yapmak istediğim şey çok basit görünüyor, ama web üzerinde herhangi bir cevap bulamıyorum. Nesnelerin NSMutableArray
bir ben var, hadi söylüyorlar 'İnsan' nesneler. Kişi tarafından NSMutableArray
sıralamak istiyorum.NSDate
hangi doğum tarihi.
Bu yöntem ile ilgili bir şey olduğunu düşünüyorum
NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(???)];
Java'da bir nesne Karşılaştırılabilir uygulamak, ya da Koleksiyonları kullanmak istiyorsunuz.bir satır içi özel sıralama...nasıl Objective-C bunu yapıyorsun? karşılaştırıcı
CEVAP
Yöntem karşılaştırın
Ya bir-yöntem karşılaştırma nesnesi uygulamak için:
- (NSComparisonResult)compare:(Person *)otherObject {
return [self.birthDate compare:otherObject.birthDate];
}
NSArray *sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];
NSSortDescriptor (daha iyi)
ya da genellikle daha iyi:
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"birthDate"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];
Kolayca dizi daha ekleyerek birden çok anahtar göre sıralayabilirsiniz. Özel karşılaştırıcı-yöntemler kullanılarak mümkündür. the documentation bakabilirsiniz.
Blok (parlak!)
Ayrıca iOS 4 Mac OS X 10.6 beri bir blok ile sıralama imkanı var:
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
Özel dizi sıralamak için nasıl Swift i...
Nasıl özel yöntemleri, alanları veya i...
Nasıl sütun(s) tarafından bir datafram...
Nasıl bir Etkinlik için başlık çubuğun...
Nasıl bir özel durum olduğunu doğrulam...