通过NSDate查找数组索引?

时间:2016-07-28 15:18:53

标签: ios swift

我想通过NSDate找出数组的索引。

我试过了:

var sectionsInTable = [NSDate]()

let indexOfElement = sectionsInTable.indexOf(date) // where date is an NSDate in my sectionsInTable Array

print(indexOfElement)

但生病总是得到错误

如何从数组中获取NSDate的索引?

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果您拥有NSDate个对象的精确副本,则代码应该有效:

let date = NSDate()
let date2 = date.copy() as! NSDate
var sectionsInTable: [NSDate] = [date]

let indexOfElement = sectionsInTable.indexOf(date2)
print(indexOfElement)
//prints: Optional(0)

答案 1 :(得分:1)

你的方法应该可以正常工作。此代码生成索引2:

let s = 31536000.0 // Seconds per Year
var tbl = [NSDate]()
tbl.append(NSDate(timeIntervalSince1970: 40*s)) // 0
tbl.append(NSDate(timeIntervalSince1970: 41*s)) // 1
tbl.append(NSDate(timeIntervalSince1970: 42*s)) // 2
tbl.append(NSDate(timeIntervalSince1970: 43*s)) // 3

let date = NSDate(timeIntervalSince1970: 42*s)
let indexOfElement = tbl.indexOf(date)

您没有获得正确索引的最可能原因是您的搜索NSDate的时间组件与数组中NSDate个对象中的时间组件不匹配。您可以通过打印两个对象并验证其时间组件来确认是这种情况。

答案 2 :(得分:0)

因为比较取决于你想要与日期时间有多深。我认为你应该遍历你的日期数组并比较它是否相等并返回该索引。