我遇到了国际(在本例中为朝鲜)NSString
值的问题。
在程序的两个不同部分中使用相同的输入字符串。第一部分找到需要突出显示的子字符串,并将突出显示的NSString
和范围存储到数据库中。
程序的第二部分检索字符串并显示突出显示。
使用NSString
完成标记部分,该precomposedStringWithCanonicalMapping
已在Unicode规范表C中使用NSString
上的NSRange
方法进行了规范化。然后,将NSString
和NSRange
存储到Core Data数据库中。
图形高亮显示是通过从数据库中检索NSString
和NSString
,并使用相同的方法将NSMutableAttributedString
放入相同的Form C中进行的,以此来初始化{{ 1}},然后使用NSRange
设置其文本属性。
在此阶段,由于NSMutableAttributedString
长80个字符,而NSString
长81个字符,程序崩溃。
NSAttributedString
没有precomposedStringWithCanonicalMapping
方法,我认为它会在内部更改表示形式,从而导致不同的编码和长度。
我该怎么办?
是强制NSAttributedString
保持基础编码的一种方法吗?
是否可以将NSRange
从一种编码转换为另一种编码?
还是我还能做些什么?
答案 0 :(得分:0)
好吧
我最终发现了发生了什么。在程序的一个特定位置,我错误地使用了decomposed
带规范映射的字符串而不是precomposedStringWithCanonicalMapping
,这就是“错误”映射的来源。