Objective-c填充数组,字符范围从“A”到“Я”

时间:2014-07-21 03:18:08

标签: objective-c arrays loops pointers char

此代码将所有元素的名称设置为“Я”,而不是从“А”到“Я”的范围:

for(int i=0; i<NEURONS_COUNT; i++) {
    char sym = (char)(128+i);
    NSString* name = [NSString stringWithFormat:@"%s", &sym];
    name = [name substringToIndex:MIN(1, [name length])];
    neurons[i] = [[Neuron alloc] init];
    [neurons[i] setName:name];
}
for(int i=0; i<NEURONS_COUNT; i++) {
    NSLog(@"%@", [neurons[i] getName]);
}

为什么呢?如何使用“A”到“Я”

的值填充名称

1 个答案:

答案 0 :(得分:0)

您错误地创建了name字符串。你确实将一个指向char的指针传递给了字符串格式说明符,它不是NULL终止的,这就是为什么用substringToIndex做一些魔术......

你应该改变你的行

char sym = (char)(128+i);
NSString* name = [NSString stringWithFormat:@"%s", &sym];
name = [name substringToIndex:MIN(1, [name length])];

unichar sym = (0x0410+i);
NSString* name = [NSString stringWithCharacters:&sym length:1];