swift:" for"循环和"如果"语句返回四个数组,其中一个元素而不是一个包含四个元素的数组

时间:2015-08-04 10:51:08

标签: ios arrays swift loops if-statement

我有一个NSDate数组。我使用timeIntervalSinceDate过滤此数组以仅保留特定的数组。循环遍历数组后,提交" if"将数组中的元素与其他元素进行比较的语句,我打算将所需的元素追加到一个新的数组中。

然而,在整个过程之后,它每次返回一个元素的数组,返回所有正确的元素,但每次都在单独的数组中。我最终得到了四个一个

的数组,而不是一个包含四个元素的数组
     if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {

                                                for n in self.dateX {

                                                    if n == self.date2 {

                                                     countArray.append(n)

                                                    } } }

} } }}}}}}   })
}}}}

您是否知道可能导致此问题的原因?为什么每次都会为每个元素返回不同的数组而不是一个包含所有元素的数组?

2 个答案:

答案 0 :(得分:0)

通过在f​​or循环中创建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]"

顺便说一句,您可以使用过滤器

在一行中创建countArray
let countArray2 = dateX.filter{ n in n == date2}

答案 1 :(得分:0)

在循环开始之前重置self.dateX。