Ios 斯威夫特:“我的名字叫什么?”;至于;循环和;如果;语句返回包含一个元素的四个数组,而不是一个包含四个元素的数组
我有一个NSDate数组。我使用timeIntervalSinceDate筛选此数组,以仅保留特定的数组。在循环遍历数组并提交一个“if”语句以将数组中的元素与其他元素进行比较之后,我打算将所需的元素附加到一个新数组中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 {
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)
} } }
} } }}}}}} })
}}}}