使用
NSRange
类型的toRange
方法将NSRange
实例转换为可选的Int
值范围。
NSRange
类型的toRange
方法有什么意义?而且,它为什么还会返回nil
为什么不直接用NSRange
的location
来得到lowerBound
和NSMaxRange(_:)
来得到upperBound
呢?
例如,给定
let nsrange = NSRange(location: 3, length: 12)
而不是
let r = nsrange.toRange()
为什么不直接做
let lowerBound = nsrange.location
let upperBound = NSMaxRange(nsrange)
发布于 2017-08-05 03:50:01
public func toRange() -> Range<Int>? {
if location == NSNotFound { return nil }
return location..<(location+length)
}
正如您所怀疑的,该方法使用NSRange
的location
获取lowerBound
,而location+length
(与NSMaxRange(_:)
等效)获取upperBound
。如果NSRange
的location
为NSNotFound
,则返回nil
。
注意:从Swift 4开始,这个方法已经被废弃,并被重命名为Range.init(_:)
。
https://stackoverflow.com/questions/45517988
复制相似问题