将Unicode Hyphen-minus插入到String中会导致错误

我试图在文本字符串中插入一个unicode连字符。 我看到“无效的通用字符”错误,其中包含以下内容:

u + 002D(连字符 – 减号)

[textViewContent insertString:@"\u002D" atIndex:cursorPosition.location]; 

但是,这些工作正常:

你+ 2212(减号)

 [textViewContent insertString:@"\u2212" atIndex:cursorPosition.location]; 

你+ 2010(连字符)

 [textViewContent insertString:@"\u2010" atIndex:cursorPosition.location]; 

我在这里讨论了几个现有的Unicode讨论,但我没有找到一个解释我的例子之间的不同之处导致第一个错误。 洞察力非常感谢。

Unversal角色名称对其使用有一些限制。 在C99和C ++ 98中,不允许使用引用基本字符集中字符的字符集(包括U + 002D)。

C ++ 11已更新此要求,因此如果您在字符串或字符文字内,则允许您使用引用基本字符的UCN。 根据您使用的编译器版本,我猜您可以使用Objective-C ++ 11来使您的代码合法化。

也就是说,因为这个字符是ASCII和基本字符集的一部分,你为什么不按字面意思写呢?

 @"-"