NSAttributedString和decomposedStringWithCanonicalMapping范围

时间:2019-09-12 07:44:18

标签: ios cocoa unicode nsstring nsattributedstring

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

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

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

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

图形高亮显示是通过从数据库中检索NSStringNSString,并使用相同的方法将NSMutableAttributedString放入相同的Form C中进行的,以此来初始化{{ 1}},然后使用NSRange设置其文本属性。

在此阶段,由于NSMutableAttributedString长80个字符,而NSString长81个字符,程序崩溃。

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

我该怎么办?

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

  • 是否可以将NSRange从一种编码转换为另一种编码?

还是我还能做些什么?

1 个答案:

答案 0 :(得分:0)

好吧

我最终发现了发生了什么。在程序的一个特定位置,我错误地使用了decomposed带规范映射的字符串而不是precomposed​String​With​Canonical​Mapping,这就是“错误”映射的来源。