Format指定类型'unsigned short'但参数的类型为'int'

时间:2012-08-24 23:02:48

标签: objective-c xcode

我有一个扫描字符串的方法,将任何新行转换为<br>以获取HTML。有问题的一行是:

NSCharacterSet *newLineCharacters = [NSCharacterSet characterSetWithCharactersInString:
          [NSString stringWithFormat:@"\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];

Xcode在这里给我一个警告:

Format specifies type 'unsigned short' but the argument has type 'int'

它建议我将所有%C更改为%d,但结果会破坏该功能。这样做的正确方法是什么,为什么Xcode推荐错误的东西?

2 个答案:

答案 0 :(得分:7)

一种选择是将您的参数转换为unsigned short:ie (unsigned short)0x0085 etc

但是如果你正在寻找换行符,你应该只使用换行符。这是“符合Unicode的”:[ NSCharacterSet newlineCharacterSet ]

修改

重新审视此问题:如果您尝试通过换行符分隔NSString / CFString,则应该使用-[ NSString getLineStart:end:contentsEnd:forRange:]

答案 1 :(得分:2)

使用@nielsbot建议的固定字符集绝对是一种符合您应用需求的方式。

但是,如果在其中编写带有Unicode代码点的字符串文字,则不需要-stringWithFormat:,只需使用Unicode转义符:

NSCharacterSet *aCharSet = [NSCharacterSet
  characterSetWithCharactersInString:@"\u2704\u2710\u2764"];