此代码将所有元素的名称设置为“Я”,而不是从“А”到“Я”的范围:
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”到“Я”
的值填充名称答案 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];