Массив содержит словари, как показано ниже.Сортировка массива для получения ближайших дат к заданной дате
NSArray *availableSlots = @[@{@"start" : <NSDate obj> , @"end" : <NSDate obj>},
@{@"start" : <NSDate obj> , @"end" : <NSDate obj>},
@{@"start" : <NSDate obj> , @"end" : <NSDate obj>},
@{@"start" : <NSDate obj> , @"end" : <NSDate obj>} ...];
Я хочу получить ближайшие даты начала и окончания выбранной даты.
Здесь приведена функция js Pseudocode для этого решения. Я хочу, чтобы преобразовать его в Objective C.
function sortByProximityToPoint(a, b) {
if (a.proximToPoint === undefined) {
if (pointInTime.diff(a.start, 'minute') >= 0 &&
pointInTime.diff(a.end, 'minute') <= 0) {
a.proximToPoint = 0;
} else if (pointInTime.diff(a.end, 'minute') > 0) {
a.proximToPoint = Math.abs(pointInTime.diff(a.end, 'minute'));
} else {
a.proximToPoint = Math.abs(pointInTime.diff(a.start, 'minute'));
}
}
if (b.proximToPoint === undefined) {
if (pointInTime.diff(b.start, 'minute') >= 0 &&
pointInTime.diff(b.end, 'minute') <= 0) {
b.proximToPoint = 0;
} else if (pointInTime.diff(b.end, 'minute') > 0) {
b.proximToPoint = Math.abs(pointInTime.diff(b.end, 'minute'));
} else {
b.proximToPoint = Math.abs(pointInTime.diff(b.start, 'minute'));
}
}
if (a.proximToPoint < b.proximToPoint) {
return -1;
}
if (a.proximToPoint > b.proximToPoint) {
return 1;
}
return 0;
}
availableSlots.sort(sortByProximityToPoint);
'NSDate' предоставляет методы для сравнения и различия, и есть функция абс в (C) объективно-то, что именно вы испытываете проблемы? – CRD
Я хочу получить ближайшие доступные слоты для pointInTime (выбранная дата). –
Понял, и у вас даже есть код для этого. При переходе на Objective-C, где вы застряли? (Вы можете отредактировать вопрос, чтобы показать это.) – CRD