不能形成 Range with end < start
Can't form Range with end < start
当我尝试创建一个 for in
循环时,它给我一个错误 "cant form Range with end < start"。 i 的值为 4362626962,请问如何解决?
for i in 1...slashList.count{
let index = slashList[i]
if !quotaList.contains(index+1)
{
slashList.removeAtIndex(index)
}
}
提前致谢!
尝试一下,它应该是 0.. 而不是 1...
for i in 0..slashList.count{
let index = slashList[i]
if !quotaList.contains(index)
{
slashList.removeAtIndex(index)
}
}
为什么你从索引 1 而不是 0 开始循环?如果你真的需要这个,你必须检查是否 slashList
空数组:
if !slashList.isEmpty {
// your code here
}
另外,从您编号的数组中删除项目也是不好的做法。假设你想从0开始循环,那么有一个快速的方法可以得到你想要的:
slashList = slashList.enumerate().flatMap{quotaList.contains([=11=].index + 1) ? [=11=].element : nil}
您的 for 有两个问题:
- 如果
slashList.count
为 0(因为 slashList
为空),它会尝试从 1 计数到 0 加 1(这会导致无限循环),这就是编译器为您提供的原因错误 start > end
.
- 如果
slashList.count
大于0(slashList
不为空),它会使用越界的索引,因为你从1数到slashList.count
,而索引从 0 到 slashList.count - 1
检查所有索引应该是:
for i in 0 ..< slashList.count {
// your code
}
忽略第一个元素(索引 0):
for i in 1 ..< slashList.count {
// your code
}
对于你的特殊情况,我觉得做这样的事情会更好:
for element in slashList {
if !quotaList.contains(element+1)
{
slashList.removeObject(element)
}
}
您可以使用 this answer 中的 removeObject。如果出于某种原因,您还需要索引,请执行:
for (index, element) in slashList.enumerate() {
// your code
}
当我尝试创建一个 for in
循环时,它给我一个错误 "cant form Range with end < start"。 i 的值为 4362626962,请问如何解决?
for i in 1...slashList.count{
let index = slashList[i]
if !quotaList.contains(index+1)
{
slashList.removeAtIndex(index)
}
}
提前致谢!
尝试一下,它应该是 0.. 而不是 1...
for i in 0..slashList.count{
let index = slashList[i]
if !quotaList.contains(index)
{
slashList.removeAtIndex(index)
}
}
为什么你从索引 1 而不是 0 开始循环?如果你真的需要这个,你必须检查是否 slashList
空数组:
if !slashList.isEmpty {
// your code here
}
另外,从您编号的数组中删除项目也是不好的做法。假设你想从0开始循环,那么有一个快速的方法可以得到你想要的:
slashList = slashList.enumerate().flatMap{quotaList.contains([=11=].index + 1) ? [=11=].element : nil}
您的 for 有两个问题:
- 如果
slashList.count
为 0(因为slashList
为空),它会尝试从 1 计数到 0 加 1(这会导致无限循环),这就是编译器为您提供的原因错误start > end
. - 如果
slashList.count
大于0(slashList
不为空),它会使用越界的索引,因为你从1数到slashList.count
,而索引从 0 到slashList.count - 1
检查所有索引应该是:
for i in 0 ..< slashList.count {
// your code
}
忽略第一个元素(索引 0):
for i in 1 ..< slashList.count {
// your code
}
对于你的特殊情况,我觉得做这样的事情会更好:
for element in slashList {
if !quotaList.contains(element+1)
{
slashList.removeObject(element)
}
}
您可以使用 this answer 中的 removeObject。如果出于某种原因,您还需要索引,请执行:
for (index, element) in slashList.enumerate() {
// your code
}