該數組包含下面的字典。對數組進行排序以獲取給定日期的最近日期
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