Я пытаюсь найти простой способ сортировки NSMutableArray, который содержит NSDictionaries. Каждый NSDictionary имеет ключ с именем «Дата», который содержит NSString даты (например: 10/15/2014).Сортировать NSArray из NSDictionaries по дате строки в ключе?
Что я хочу сделать, так это отсортировать массив на основе этих строк в порядке возрастания.
Я попытался это не повезло:
NSComparisonResult dateSort(NSString *s1, NSString *s2, void *context) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM/dd/yy"];
NSDate *d1 = [formatter dateFromString:s1];
NSDate *d2 = [formatter dateFromString:s2];
return [d1 compare:d2]; // ascending order
return [d2 compare:d1]; // descending order
}
Я также попытался это не повезло:
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest" ascending:YES];
stories=[stories sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
recent = [stories copy];
Каждый способ приводит к аварии, и я думаю, что это потому, что это NSString вместо NSDate, но я не понимаю, как это сделать.
Может ли кто-нибудь показать мне правильный способ выполнить это?
Это, как я называю первый блок кода:
theDictionaries = [[theDictionaries sortedArrayUsingFunction:dateSort context:nil] mutableCopy];
В какой строке это ошибка, и что такое сообщение об ошибке? – rdelmar
С первым блоком кода он падает на NSDate * d1 = [formatter dateFromString: s1]; с сбоем: NSDictionaryI length]: непризнанный селектор, отправленный в экземпляр – user3251233
Похоже, вы передаете словарь в строковый параметр (s1). Показать код для всего метода. Откуда берутся s1 и s2? – rdelmar