使用
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
复制相似问题