该数组包含下面的字典。对数组进行排序以获取给定日期的最近日期
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伪代码函数。我想将其转换成目标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'提供了比较和差异的方法,并且在(Objective-)C的ABS功能,你到底是有问题呢? – CRD
我想为pointInTime(选定日期)获取最近的availableSlots。 –
了解,你甚至有一些代码来做到这一点。转换为Objective-C时,卡住了哪里? (您可以编辑问题以显示此信息。) – CRD