繁体   English   中英

在字符串中创建 NSRange 时崩溃

[英]Crash when creating NSRange in String

我在NSRange创建中遇到随机崩溃。 因为我之前加了一个检查,我不明白它是怎么发生的:

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

这适用于游乐场:

import Foundation

let textStr = "whatever you want"
let slide = "you"
let start = slide.startIndex // not sure what this was meant to be in your code
if textStr.index(textStr.unicodeScalars.startIndex, offsetBy: slide.unicodeScalars.distance(from: slide.startIndex, to: slide.endIndex), limitedBy: textStr.unicodeScalars.endIndex) != nil {
    let realEnd = textStr.index(textStr.unicodeScalars.startIndex, offsetBy: slide.unicodeScalars.distance(from: slide.unicodeScalars.startIndex, to: slide.unicodeScalars.endIndex))
    let nsRange = NSRange(start..<realEnd, in: textStr)
}

不过,这似乎是一种奇怪的方法。 也许重新考虑你的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM