Ios 斯威夫特:“我的名字叫什么?”;至于;循环和;如果;语句返回包含一个元素的四个数组,而不是一个包含四个元素的数组

Ios 斯威夫特:“我的名字叫什么?”;至于;循环和;如果;语句返回包含一个元素的四个数组,而不是一个包含四个元素的数组,ios,arrays,swift,loops,if-statement,Ios,Arrays,Swift,Loops,If Statement,我有一个NSDate数组。我使用timeIntervalSinceDate筛选此数组,以仅保留特定的数组。在循环遍历数组并提交一个“if”语句以将数组中的元素与其他元素进行比较之后,我打算将所需的元素附加到一个新数组中 if NSDate().timeIntervalSinceDate(self.date2) <= 86400 { for n in self.dateX {

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

     if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {

                                                for n in self.dateX {

                                                    if n == self.date2 {

                                                     countArray.append(n)

                                                    } } }

} } }}}}}}   })
}}}}
但是,在整个过程之后,它每次返回一个包含一个元素的数组,返回所有正确的元素,但每次都是在单独的数组中。我没有使用一个由四个元素组成的数组,而是使用了四个由一个元素组成的数组

     if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {

                                                for n in self.dateX {

                                                    if n == self.date2 {

                                                     countArray.append(n)

                                                    } } }

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

如果NSDate().timeintervalncedate(self.date2)可以看到所看到的内容的唯一方法是在for循环中创建countArray。我在操场上做这个

     if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {

                                                for n in self.dateX {

                                                    if n == self.date2 {

                                                     countArray.append(n)

                                                    } } }

} } }}}}}}   })
}}}}
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)
顺便说一下,您可以使用过滤器在一行中创建countArray

     if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {

                                                for n in self.dateX {

                                                    if n == self.date2 {

                                                     countArray.append(n)

                                                    } } }

} } }}}}}}   })
}}}}
let countArray2 = dateX.filter{ n in n == date2}

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

显示更多代码(当您初始化countArray时)。我已经在操场上用完整代码更新了它,它确实工作得很好。我有包含所有代码的“for”循环。谢谢你的建议。但是,它仍然返回不同的数组,其中包含单个元素。如果它在游戏中运行良好,那么在代码中也会运行良好。您在问题中发布的代码不会生成四个单独的数组。此代码本身位于其他几个“for”循环中。当我在一个循环之前创建countArray变量时,它返回一个数组,但内容没有过滤。如果我在内部创建它,它会返回正确的过滤元素,但在不同的数组中。我已经用完整的代码进行了更新。你看,它本身包含在其他“for”循环中。我找不到更干净的方式来做这件事。。。
     if NSDate().timeIntervalSinceDate(self.date2) <= 86400 {

                                                for n in self.dateX {

                                                    if n == self.date2 {

                                                     countArray.append(n)

                                                    } } }

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