Ios Swift 2.2抛出二进制运算符错误的For循环更新

Ios Swift 2.2抛出二进制运算符错误的For循环更新,ios,swift,for-loop,Ios,Swift,For Loop,我正在尝试更新我的一些swift代码,以符合swift 2.2指南。我正在尝试更新我的for循环,这是我目前拥有的 for(var i = 0; persons?.count > i; i += 1){} 这就是我认为我应该使用的 for i in (0..<persons?.count){} 中的i(0..问题是persons?.count可能是nil和0..问题是persons?.count可能是nil和0..persons在这里是什么?一个对象数组这里是什么?一个对象数组感

我正在尝试更新我的一些swift代码,以符合swift 2.2指南。我正在尝试更新我的for循环,这是我目前拥有的

for(var i = 0; persons?.count > i; i += 1){}
这就是我认为我应该使用的

for i in (0..<persons?.count){}

中的i(0..问题是
persons?.count
可能是
nil
0..问题是
persons?.count
可能是
nil
0..persons在这里是什么?一个对象数组这里是什么?一个对象数组感谢简单而干净的解决方案!实际上,在测试了过载之后,斯威夫特似乎不喜欢它,因为它会导致无限循环(代码)。非常感谢@originaluser2,我希望我能为此给你一些代表。@overactor没问题:)将
nil
的处理隐藏在自定义运算符后面不是一个好主意。更好的解决方案可能是处理
persons
早于
nil
的情况。对于数组,我们可以使用空数组
[]
而不是在大多数情况下的
nil
。然后计数将是
0
。感谢简单而干净的解决方案!事实上,在测试了过载后,斯威夫特似乎不喜欢它,因为它会导致无限循环(
。感谢一堆@originaluser2,我希望我能为此给你一些代表。@overactor没问题:)将
nil
的处理隐藏在自定义运算符后面不是一个好主意。更好的解决方案可能是处理
persons
早于
nil
的情况。对于数组,在大多数情况下,我们可以使用空数组
[]
而不是
nil
。然后计数将是
0
for i in 0..<(persons?.count ?? 0) {
    doStuff(i)
}
func ..<<T:ForwardIndexType where T:Comparable>(lower: T, upper: T?) -> Range<T> {
    return lower..<(upper ?? lower)
}
for i in 0..<persons?.count {
    doStuff(i)
}
guard let persons = persons else {
    // take care of business
}

for person in persons {
    doStuff(person)
}