我有这段代码:
var formatterIndex = hourFormattingPattern.endIndex
let formattingPatternRange = formatterIndex ..< hourFormattingPattern.startIndex
但是当调用第二行时,我收到了错误访问错误。有没有办法指定一个通过字符串hourFormattingPattern
反转的范围?初始化后,我这样做:
while !stop {
//Do pattern matching and switching with string and replace char string
formatterIndex = formatterIndex.predecessor()
if formatterIndex <= hourFormattingPattern.endIndex || tempIndex <= tempString.endIndex {
stop = true
}
}
任何帮助表示赞赏。谢谢
答案 0 :(得分:2)
是的,您不能形成从较大数字到较小数字的范围。此外,endIndex
不是有效索引 - 它是最后一个有效索引之后的索引。但是,你可以形成你的前锋然后反转它:
var formatterIndex = hourFormattingPattern.endIndex
let formattingPatternRange = hourFormattingPattern.startIndex..<formatterIndex
for formatterIndex in formattingPatternRange.reversed() where !stop {
//Do pattern matching and switching with string and replace char string
if formatterIndex <= hourFormattingPattern.endIndex || tempIndex <= tempString.endIndex {
stop = true
}
}
但是,您的逻辑可能已关闭,因为 formatterIndex
的所有可能值均为<= hourFormattingPattern.endIndex
,因此stop
将设置为true
在第一轮循环中。