我想通过NSDate找出数组的索引。
我试过了:var sectionsInTable = [NSDate]()
let indexOfElement = sectionsInTable.indexOf(date) // where date is an NSDate in my sectionsInTable Array
print(indexOfElement)
但生病总是得到错误
如何从数组中获取NSDate的索引?
提前致谢。
答案 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)
因为比较取决于你想要与日期时间有多深。我认为你应该遍历你的日期数组并比较它是否相等并返回该索引。