【问题标题】:NSAttributedString & decomposedStringWithCanonicalMapping rangesNSAttributedString & decomposedStringWithCanonicalMapping 范围
【发布时间】:2019-09-12 07:44:18
【问题描述】:

我遇到了国际(在本例中为韩语)NSString 值的问题。

程序的两个不同部分使用相同的输入字符串。第一部分找到需要突出显示的子字符串,将NSString 和突出显示的范围存储到数据库中。

程序的第二部分检索字符串并显示突出显示。

标记部分使用NSString 完成,该NSString 已使用NSString 上的precomposedStringWithCanonicalMapping 方法在Unicode 规范化形式C 中进行规范化。然后将NSRangeNSString 存储到Core Data 数据库中。

图形突出显示是通过从数据库中检索NSRangeNSString,使用相同的方法将NSString放入同一个Form C中,使用它来初始化NSMutableAttributedString并使用@987654332 @ 设置其文本属性。

在这个阶段,程序崩溃了,因为NSMutableAttributedString 是 80 个字符长,而 NSString 是 81 个字符长..

NSAttributedString 没有precomposedStringWithCanonicalMapping 方法,我认为它会在内部更改表示,从而导致不同的编码和长度。

我能做什么?

  • 是一种强制NSAttributedString 保持底层编码的方法吗?

  • 有没有办法将NSRange 从一种编码转换为另一种编码?

或者还有什么我可以做的吗?

【问题讨论】:

    标签: ios cocoa unicode nsstring nsattributedstring


    【解决方案1】:

    好的,

    我终于知道发生了什么。在程序的一个特定位置,我错误地使用了decomposedString​With​Canonical​Mapping 而不是precomposed​String​With​Canonical​Mapping,这就是“错误”映射的来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多