在将旧的iOS应用转换为Sift 3.0时,我遇到了以下问题: 代码是:
cutRange = numberString.index(numberString.startIndex, offsetBy:2)...numberString.index(numberString.startIndex, offsetBy:5)
我得到的错误信息是:
No '...' candidates produce the expected contextual result type 'Range<String.Index>' (aka 'Range<String.CharacterView.Index>')
我看过一些与该主题相关的帖子,但并不十分满意。
那么解决这个问题的最简单方法是什么?
答案 0 :(得分:3)
在Swift 3中,两个范围运算符产生不同的结果:
...
- &gt; ClosedRange
(默认情况下)..<
- &gt; Range
(默认情况下)因此,假设您的cutRange
被声明为Range<String.Index>
,则需要使用半开放范围运算符..<
:
cutRange = numberString.index(numberString.startIndex, offsetBy:2)..<numberString.index(numberString.startIndex, offsetBy:6)
(请不要错过最后一个偏移更改为6
。)