我有一个NSDate数组。我使用timeIntervalSinceDate过滤此数组以仅保留特定的数组。循环遍历数组后,提交" if"将数组中的元素与其他元素进行比较的语句,我打算将所需的元素追加到一个新的数组中。
然而,在整个过程之后,它每次返回一个元素的数组,返回所有正确的元素,但每次都在单独的数组中。我最终得到了四个一个
的数组,而不是一个包含四个元素的数组 if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {
for n in self.dateX {
if n == self.date2 {
countArray.append(n)
} } }
} } }}}}}} })
}}}}
您是否知道可能导致此问题的原因?为什么每次都会为每个元素返回不同的数组而不是一个包含所有元素的数组?
答案 0 :(得分:0)
通过在for循环中创建countArray,您可以看到所见内容的唯一方法。我在Playground中这样做
let date2 = NSDate()
let dateX: [NSDate] = [date2, date2, date2]
var countArray: [NSDate] = [] // <<== Not in the for loop
if NSDate().timeIntervalSinceDate(date2) <= 86400
{
for n in dateX
{
if n == date2
{
countArray.append(n)
}
}
}
print(countArray)
并打印
"[2015-08-04 10:58:06 +0000, 2015-08-04 10:58:06 +0000, 2015-08-04 10:58:06 +0000]"
顺便说一句,您可以使用过滤器
在一行中创建countArraylet countArray2 = dateX.filter{ n in n == date2}
答案 1 :(得分:0)
在循环开始之前重置self.dateX。