首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSRange.toRange()有什么意义?

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

Stack Overflow用户
提问于 2017-08-05 03:50:01
回答 1查看 623关注 0票数 0

String.UTF16View说:

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

NSRange类型的toRange方法有什么意义?而且,它为什么还会返回nil

为什么不直接用NSRangelocation来得到lowerBoundNSMaxRange(_:)来得到upperBound呢?

例如,给定

代码语言:javascript
运行
复制
let nsrange = NSRange(location: 3, length: 12)

而不是

代码语言:javascript
运行
复制
let r = nsrange.toRange()

为什么不直接做

代码语言:javascript
运行
复制
let lowerBound = nsrange.location
let upperBound = NSMaxRange(nsrange)
EN

回答 1

Stack Overflow用户

发布于 2017-08-05 03:50:01

看看 method implementation

代码语言:javascript
运行
复制
public func toRange() -> Range<Int>? {
    if location == NSNotFound { return nil }
    return location..<(location+length)
}

正如您所怀疑的,该方法使用NSRangelocation获取lowerBound,而location+length (与NSMaxRange(_:)等效)获取upperBound。如果NSRangelocationNSNotFound,则返回nil

注意:从Swift 4开始,这个方法已经被废弃,并被重命名为Range.init(_:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45517988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档