我想用长度为1的字符初始化NSString
,但是我收到错误。这是我的代码:
for(int i=0;i<[word length];i++)
{
letterMap = [self stringToAscii:[word substringWithRange:NSMakeRange(i, 1) ]];
NSInteger codec = (letterMap + shifter) % 26;
unichar ch = [self asciiToString:codec];
NSString * codedLetter = [NSString stringWithCharacters:ch length:[ch length]];
}
答案 0 :(得分:4)
unichar
不是ObjC对象,它是单个unicode字符的原始C类型(或typedef)。您需要调用NSString方法(可以在C类数组中使用多个字符),如下所示:
NSString * codedLetter = [NSString stringWithCharacters:&ch length:1];
(你的代码行中有两个问题:首先你要传递一个unichar
的值作为第一个参数,而不是指向它的指针,第二个是你要尝试的在不是ObjC对象的东西上调用-length
,甚至是指针。当它试图向某个随机存储器地址发送消息时,它会因后者而爆炸。)