swift - 在 String 中创建 NSRange 时崩溃

标签 swift string nsrange

我在 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

最佳答案

这适用于 Playground :

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)
}

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

关于swift - 在 String 中创建 NSRange 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59910962/

相关文章:

ios - 如何使用应用程序端的 strip 更新保存的信用卡信息(swift)

ios - 使用 swift 在文本标签中的文本之间嵌入一个图标

swift - 如何将字符串转换为 UIColor (Swift)

objective-c - 使用偏移量获取 NSString 中字符的索引并在 Objective-C 中使用子字符串

objective-c - 在数组中搜索 NSRange 的字符串

ios - 如何在不拉伸(stretch)的情况下在 UIView 中填充背景图像

ios - 一个 Controller 中的多个图像选择器

ios - FCM 在 iPhone 8 前台模式下无法接收

python - 如何在 Python 中获取字符串的子字符串?

swift - 在 Swift 中将单个整数值视为一个范围