将日期字符串插入正确索引的有序日期字符串数组中

时间:2015-08-23 19:10:20

标签: ios arrays xcode swift date

我有一个以字符串形式出现的日期数组,我想在最后的最早日期组织它们。情况是我有一个日期列表(已经组织),我正在插入一个日期。例如,我想在

中插入"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

1 个答案:

答案 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

并且可以插入第一个和最后一个位置。

您可能需要更改数组引用和类似内容,因为我不知道您打算以何种方式包含此代码段。