我有一个扫描字符串的方法,将任何新行转换为<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推荐错误的东西?
答案 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"];