我是 Swift(和一般编码)和堆栈溢出的新手。SO 在学习如何编码方面提供了极大的帮助,因此,非常感谢 SO 社区提供了很好的问题和答案。
这是我的第一个 SO 问题……</p>
我已经在这个挑战上旋转了几天。我已经阅读并尝试了多种建议的解决方案,但到目前为止没有一个对我有用。
我有一个从 Web API 检索的动态 NSDate 数组(使用早期代码)。
[2016-05-01 03:27:22 +0000, 2016-05-01 03:27:24 +0000, 2016-05-01 03:27:25 +0000, 2016-05-01 03:27:27 +0000, 2016-05-03 12:48:07 +0000, 2016-05-03 12:48:09 +0000, 2016-05-03 12:48:11 +0000, 2016-05-03 12:48:13 +0000, 2016-05-03 19:52:46 +0000, 2016-05-03 19:52:51 +0000, 2016-05-03 19:52:56 +0000, 2016-05-04 00:37:27 +0000, 2016-05-04 00:37:30 +0000, 2016-05-04 12:36:17 +0000, 2016-05-04 12:36:19 +0000, 2016-05-04 12:46:26 +0000, 2016-05-04 12:46:28 +0000, 2016-05-04 17:39:31 +0000, 2016-05-04 17:39:34 +0000, 2016-05-04 17:54:24 +0000, 2016-05-04 23:46:20 +0000]
我设置了一个循环遍历上述数组的方法,并检查数组中是否有任何项目在最后 x 分钟内带有时间戳。
func prepareJSONData1 () {
let currentDate = NSDate()
var startDate = currentDate.dateByAddingTimeInterval(-5 * 60) //sets the start date to 5 minutes prior to current time
while startDate.compare(currentDate) != NSComparisonResult.OrderedDescending {
var i = Int(0) //setting up a counter
for i in 0...self.quantumArrayNSDate.count - 1 {
if startDate == self.quantumArrayNSDate[i] {
print("Data entry found for \(startDate) timestamp")
}
self.i += 1
}
startDate = startDate.dateByAddingTimeInterval(1) //increment through the NSDate range
}
}
无论我设置开始日期多远(即使我回去几个月),我都无法让此代码返回匹配的项目。我怀疑我没有正确设置 startDate 变量,因为如果我将该段代码更改为:
startDate = quantumArrayNSDate.first!
然后代码返回数组中的所有项目,正如我所期望的那样。
我也尝试过这种其他方法但没有任何成功:
let calendar = NSCalendar.currentCalendar()
let startDate = calendar.dateByAddingUnit(.Minute, value: -5, toDate: NSDate(), options: [])! // <- this didn't work
如果有人能指出我做错了什么并提出解决方案,我将不胜感激。谢谢!