У моих объектов есть метка времени и текст, временная метка - это NSDate, отформатированная до NSString перед сохранением. После создания нового объекта и установки его значений я его сохраняю. Позже при загрузке я помещал все объекты в массив и смешивал этот массив с другим массивом, поэтому мне нужно отсортировать массив.
Моя проблема: я не знаю, как правильно сортировать массив с помощью свойства timestamp объекта.
Я много искал, но до сих пор не получил актуального ответа. Любая помощь приветствуется.сортировать смешанный массив с объектами
ответ
Попробуйте это;
NSArray *sortedArray = [unSortedArray sortedArrayUsingComparator: ^NSComparisonResult(DateObj *id1, DateObj *id2) {
if(id1.timeStamp > id2.timeStamp)
return NSOrderedAscending;
else if (id1.timeStamp < id2.timeStamp)
return NSOrderedDescending;
else return NSOrderedSame;
}];
Подробнее о сортировке HERE.
'BOOL' (который имеет два возможных значения) не является синонимом для' NSComparisonResult' (который имеет три возможных значения). – neilco
Используйте цикл для сравнения более двух значений. – KethanKumar
Для сравнения двух различных штампа времени вы должны преобразовать его в NSData первый:
-(NSDate)convertToDate:(NSString*)inputDate
//NSString *inputDate = @"11/20/2013 3:30:05 PM"; //<-- Your date probably is different than that
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
dateFormatter1.dateFormat = @"MM/dd/yyyy hh:mm:ss a"; //<-- this needs to be changet to match your time stamp format
[dateFormatter1 setLocale:[NSLocale currentLocale]];
NSDate *date = [dateFormatter1 dateFromString:inputDate]; //<- this is your NSDate object.
return date;
}
NSArray *sortedArray = [unSortedArray sortedArrayUsingComparator: ^NSComparisonResult(DateObj *id1, DateObj *id2) {
NSDate d1 = [self convertToDate:id1.timeStamp];
NSDate d2 = [self convertToDate:id2.timeStamp];
return [d1 compare:d2];
}];
Вы также можете добавить сравнить метод вашего класса, например:
- (NSComparisonResult)compare:(YourClass *)obj
{
NSDate d1 = [self convertToDate:self.timeStamp];
NSDate d2 = [self convertToDate:obj.timeStamp];
return [d1 compare:d2];
}
И если вам нужно сортировать массив этого объекта вы звоните:
NSArray *sortedArray = [yourArray sortedArrayUsingSelector:@selector(compare:)];
Мое решение:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd.MM.YYYY HH:mm:ss"];
NSMutableArray *timeStamps = [[NSMutableArray alloc] init];
for(Object *object in allObjects) {
NSDate *time = [dateFormatter dateFromString:object.timeStamp];
[timeStamps addObject:time];
}
[timeStamps sortedArrayUsingSelector:@selector(compare:)];
NSMutableArray *sortedArray = [NSMutableArray arrayWithCapacity:[allObjects count]];
for(int i = 0; i < [timeStamps count]; i++) {
for(Object *object in allObjects) {
if(object.timeStamp == [dateFormatter stringFromDate:timeStamps[i]]) {
[sortedArray addObject:messageObject];
}
}
}
return sortedArray;
- 1. Javascript пытается сортировать смешанный массив численно
- 2. быстры, сортировать NSMutableArray с объектами
- 3. Сортировать NSArray с пользовательскими объектами
- 4. Как сортировать текст смешанный номер с underscore.js
- 5. как сортировать смешанный цифровой/буквенно-цифровой массив в JavaScript
- 6. Сортировать NSAarray с пользовательскими объектами с датами
- 7. howto сортировать массив с объектами по длине значения свойства?
- 8. смешанный массив рода
- 9. Как построить смешанный массив
- 10. DataTables массив с объектами
- 11. AngularJS массив с объектами
- 12. Массив с простыми объектами
- 13. PHP - Зацикливание через смешанный массив
- 14. Как документировать массив с подмассивами (смешанный тип)?
- 15. Javascript сортировать массив в два раза сортировать
- 16. Массив строк для преобразования в смешанный массив
- 17. PHP сортировать массив массив
- 18. Два многомерный массив с объектами
- 19. Петля через массив с объектами
- 20. MongoDB Sum массив с объектами
- 21. Доступ массив с вложенными объектами
- 22. Заполнить массив Java с объектами
- 23. Массив массивов с несколькими объектами
- 24. C++ массив с несколькими объектами
- 25. сортировать массив с помощью переменной GET .. сортировать не сортировать
- 26. PHP сортировать массив с предпочтением
- 27. Функция сортировать массив с JavaScript
- 28. Сортировать массив строк с PHP
- 29. сортировать массив строк с функцией
- 30. сортировать массив с минимальными движениями
Используйте 'sortedArrayUsingComparator:'. В блоке компаратора преобразуйте метки времени NSString в объекты NSDate и «сравните:« один с другим ». – neilco