没有&#39; ...&#39;候选人产生&#39; Range <string.index>&#39;

时间:2017-01-03 03:33:45

标签: ios string swift3 range

在将旧的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>')

我看过一些与该主题相关的帖子,但并不十分满意。

那么解决这个问题的最简单方法是什么?

1 个答案:

答案 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。)