'初始化(开始:结束:)'已弃用:它将在Swift 3中删除。使用' ..<'操作者

时间:2016-03-22 14:55:27

标签: swift xcode7.3

我使用以下代码:

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)

自更新到Xcode 7.3(Swift 2.2)后,我得到以下提示:

  

&#39;初始化(开始:结束:)&#39;不推荐使用:它将在Swift 3中删除。使用   &#39; ..&lt;&#39;操作

对于我来说,不清楚如何翻译&#34;正确使用&#39; ..&lt;&#39;操作

6 个答案:

答案 0 :(得分:88)

你应该写一下

var continousDigitsRange1:Range<Int> = 0..<0

或者如果你想更简单

var continousDigitsRange = 0..<0

答案 1 :(得分:35)

另外值得注意的是,对于substringWithRange一个字符串,您现在可以使用

let theString = "Hello, how are you"
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
theString.substringWithRange(range)

答案 2 :(得分:8)

  

闭区域运算符(a...b)定义了从a运行的范围   到b,并包括值a和b。 a的值不能是   大于b。

     

半开放范围运算符(a..<b)定义了从a运行的范围   到b,但不包括b。据说这是半开放的   包含其第一个值,但不包含其最终值。与关闭一样   范围运算符,a的值不得大于b。如果   a的值等于b,则结果范围将为空。

The Swift Programming Language (Swift 2.2) - Basic Operators

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)
--to--
var continousDigitsRange:Range<Int> = 0..<0

答案 3 :(得分:2)

全面展示bmichotte的答案......

let theString = "Hello, how are you today my friend"
    let start = 3
    let end = 15
    let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
    let p = theString.substringWithRange(range)
    print("this is the middle bit>\(p)<")

这产生了这是中间位&gt; lo,&lt;

答案 4 :(得分:1)

参考swift 3.0添加一些要点

//可数范围示例。

let range1 = 0..<5

可数封闭范围示例

let range2 = 0...5

//来自边界的范围

let range = Range(uncheckedBounds: (range1.lowerBound,range1.upperBound))

//从substringRange获取距离。

let str = "Hello, how are you"
let substringRange = str.characters.indices

//在Swift 3.0下面

let length = substringRange.distance(from: substringRange.startIndex, to: substringRange.endIndex)

//适用于Swift 3.0

let length2 = str.distance(from: substringRange.startIndex, to: substringRange.endIndex)

答案 5 :(得分:1)

我总是有一个函数来获取字符串的子字符串范围。这是我更新的Swift 3函数:

func getSubStringRange(fullString: String, fromIndex: Int, subStringSize: Int) -> Range<String.Index> {
    let startIndex = fullString.characters.index(fullString.startIndex, offsetBy: fromIndex)
    let endIndex = fullString.characters.index(startIndex, offsetBy: subStringSize)

    let subStringRange = startIndex..<endIndex

    return subStringRange
}

该函数非常自我解释 - 您传入一个字符串(fullString),子字符串开始的字符串的索引(fromIndex)以及subString的大小(subStringSize)。

示例:

let greeting = "Hi, my name is Nathaniel"
let getName = greeting[getSubStringRange(fullString: greeting, fromIndex: 15, subStringSize: 9)]

print("Name: \(getName)")

- &GT;印刷品:“姓名:纳撒尼尔”