我是iOS新手,下面的代码给了我一个ascii值:
NSArray *arry = [NSArray arrayWithObjects:@'a',@'b',@'c', nil];
NSString *x = [arry objectAtIndex:0];
NSLog(@"%@", x);
输出:97
但我需要它打印:a,而不是ascii,这是我尝试的:
NSString *string = [NSString stringWithFormat:@"%c", x];
但是没有用
答案 0 :(得分:3)
一个非常好的技巧:)
正在发生的事情是c char
类型是用'
编写的,它们基本上是ASCII值。另一方面,ObjC有一个名为literals的东西,其中一个允许从一个数字转换为NSNumber
类型。
这里发生的是你的角色转换成ASCII等价物(实际上只是一个整数的整数 - char
)然后变成NSNumber
s。 ASCII中的'a'
为97
。所以:
'a' -> ASCII 97 -> Wrapped in a NSNumber
您希望您的数组包含字符串,以便您执行以下操作:
NSArray *arry = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];
NSArray
只能包含对象(而NSNumber
是一个对象),这就是您必须使用NSString
的原因。如果你想在阵列中使用字符,你将不得不使用c样式数组。
答案 1 :(得分:1)
问题是简单的引用映射到char而不是NSString。这应该有效:
NSArray *arry = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];
答案 2 :(得分:0)
Objective-C中的字符串文字必须用双引号括起来
NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
NSString *x = [array objectAtIndex:0];
NSLog(@"%@", x);