Ios 否'';候选人制作';范围<;字符串索引>';

Ios 否'';候选人制作';范围<;字符串索引>';,ios,string,swift3,range,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<St

将旧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>')
No'…'候选项生成预期的上下文结果类型“Range”(又名“Range”)
我看过一些关于这个主题的帖子,但不是很满意


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

在Swift 3中,两个范围运算符生成不同的结果:

  • 闭合范围运算符
    ->
    ClosedRange
    (默认情况下)
  • (半开)范围运算符
    范围
    (默认)

因此,假设您的
cutRange
声明为
Range
,则需要使用半开范围运算符
。在Swift 3中,两个范围运算符生成不同的结果:

  • 闭合范围运算符
    ->
    ClosedRange
    (默认情况下)
  • (半开)范围运算符
    范围
    (默认)

因此,假设您的
cutRange
被声明为
Range
,您需要使用半开范围运算符
。在Swift 3游戏中,这对我来说似乎很好。我假设
numberString
是一个
String
?是的numberString是一个String。在swift3游戏中,这对我来说似乎编译得很好。我假设
numberString
是一个
String
?是的numberString是一个String.OK。我试试看。这意味着使用“…”和“…”。@Michel,没错。Swift 3添加了一些范围类型,而不是
range
ClosedRange
CountableRange
ClosedCountableRange
无法生成
range
CountableRange
。好的。我会试试。这意味着使用“…”和使用“..@Michel,没错。Swift 3添加了一些范围类型,而不是
范围
-
关闭范围
可计数范围
关闭可计数范围
。和
无法生成
范围
可数范围
cutRange = numberString.index(numberString.startIndex, offsetBy:2)..<numberString.index(numberString.startIndex, offsetBy:6)