我有一个以字符串形式出现的日期数组,我想在最后的最早日期组织它们。情况是我有一个日期列表(已经组织),我正在插入一个日期。例如,我想在
中插入"08/23/2015"
["08/27/2015", "08/27/2015", "08/25/2015", "08/21/2015"]
所以它出现在索引3。
我试过了:
var id = -1
var index = datesArray.dates.count
let newDate = "08/23/2015"
let dDateStr = stringFromDate("08/23/2015")
let cDateStr = stringFromDate(NSDate())
if dDateStr != cDateStr {
while id < 0 && index > 0 {
if dateFromString(dDateStr).timeIntervalSinceNow >= dateFromString(destView.dates[index]).timeIntervalSinceNow {
id = index
}
index = index - 1
}
id = 0
}
else {
id = 0
}
datesArray.insert(newDate, atIndex: id)
然而,它总是给我id = -1
。有什么建议吗?
我在Xcode 6.4 for iOS 8上使用Swift 1.2
答案 0 :(得分:2)
我改变了你的代码但是它现在有效(改变了,因为我部分地不明白你的代码应该做什么。):
func dateFromString (string:String) -> NSDate {
let df = NSDateFormatter()
df.dateFormat = "MM/dd/yyyy"
return df.dateFromString(string)!
}
var datesArray = ["08/27/2015", "08/27/2015", "08/25/2015", "08/21/2015"]
var id = 0
var index = datesArray.count
let newDateString = "08/23/2015"
let newDate = dateFromString(newDateString).timeIntervalSinceNow
for index in 0..<datesArray.count {
if dateFromString(datesArray[index]).timeIntervalSinceNow >= newDate {
id = index + 1
}
}
datesArray.insert(newDateString, atIndex: id)
请注意,它仍然不是最高性能的代码。
但它输出
3
并且可以插入第一个和最后一个位置。
您可能需要更改数组引用和类似内容,因为我不知道您打算以何种方式包含此代码段。