objectAtIndex给出一个ascii值

时间:2015-07-16 11:31:02

标签: ios objective-c

我是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];

但是没有用

3 个答案:

答案 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);