Swift NSRange.toRange()有什么意义?

Swift NSRange.toRange()有什么意义?,swift,range,nsrange,Swift,Range,Nsrange,说: 使用NSRange类型的toRange方法将[NSRange]实例转换为可选的Int值范围 NSRange类型的toRange方法有什么意义?为什么它会返回零呢 为什么不直接使用NSRange的位置来获得lowerBound,而使用NSMaxRange:来获得上限 例如,给定 let nsrange = NSRange(location: 3, length: 12) 而不是 let r = nsrange.toRange() 为什么不直接做呢 let lowerBound = nsr

说:

使用NSRange类型的toRange方法将[NSRange]实例转换为可选的Int值范围

NSRange类型的toRange方法有什么意义?为什么它会返回零呢

为什么不直接使用NSRange的位置来获得lowerBound,而使用NSMaxRange:来获得上限

例如,给定

let nsrange = NSRange(location: 3, length: 12)
而不是

let r = nsrange.toRange()
为什么不直接做呢

let lowerBound = nsrange.location
let upperBound = NSMaxRange(nsrange)

正如您所怀疑的,该方法使用NSRange的位置来获取下限,使用location+length(相当于NSMaxRange_u1;:)来获取上限。如果未找到NSRange的位置,则返回nil


注意:从Swift 4开始,此方法已被弃用,并已重命名为Range.init:。

FYI,这是一个死链接。
public func toRange() -> Range<Int>? {
    if location == NSNotFound { return nil }
    return location..<(location+length)
}