【发布时间】:2020-01-25 16:04:26
【问题描述】:
我在创建NSRange 时遇到随机崩溃。因为之前加了check,不明白怎么会这样:
let textStr = "whatever you want"
if let end = textStr.unicodeScalars.index(textStr.startIndex, offsetBy: slide.endIndex, limitedBy: textStr.endIndex){
let realEnd = textStr.unicodeScalars.index(textStr.startIndex, offsetBy: slide.endIndex)
nsRange = NSRange(start...realEnd, in: textStr)
}
-
slide是一个由解析器生成的对象,代表textStr的一部分。 - 解析器出于性能原因使用
textStr.unicodeScalars
【问题讨论】:
-
什么是
slide,什么是start,你得到什么错误信息? -
您不能使用来自不同字符串的字符串索引。顺便说一句,你为什么使用 unicodeScalars 索引?相关stackoverflow.com/a/43233619/2303865
-
很可能只是
start..<realEnd -
在初始问题中添加了更多上下文
-
这只是在黑暗中拍摄,您应该添加一个可重现的示例,并为
slide提供具体值。您所说的性能原因是什么? Swift 中的StringAPI 经过高度优化。