Ios objectAtIndex正在提供一个ascii值

Ios objectAtIndex正在提供一个ascii值,ios,objective-c,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]; 但这不起作用,问题

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

但这不起作用,问题是简单的引号映射到一个字符而不是一个字符串。这应该起作用:

NSArray *arry = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];

问题是简单的引号映射到一个char而不是NSString。这应该起作用:

NSArray *arry = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];

Objective-C中的字符串文字必须用双引号括起来

NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
NSString *x = [array objectAtIndex:0];
NSLog(@"%@", x);

Objective-C中的字符串文字必须用双引号括起来

NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];
NSString *x = [array objectAtIndex:0];
NSLog(@"%@", x);
一个非常好的把戏:)

正在发生的事情是,c
char
类型是用
'
编写的,它们基本上是ASCII值。另一方面,ObjC有一个名为的东西,其中一个允许从一个数字转换为一个
NSNumber
类型

这里发生的事情是,您的字符被转换成ASCII等价物(实际上是一个整数,只是一个单字节整数-
char
),然后转换成
NSNumber
s97。所以:
'a'->ASCII 97->包装在NSNumber中

您希望数组包含字符串,以便执行以下操作:

NSArray*arry=[NSArray数组,其对象为:@“a”、“b”、“c”、“nil]

NSArray
只能包含对象(而
NSNumber
是一个对象),这就是为什么必须使用
NSString
s。如果要在数组中使用字符,就必须使用c样式的数组。

一个非常好的技巧:)

正在发生的事情是,c
char
类型是用
'
编写的,它们基本上是ASCII值。另一方面,ObjC有一个名为的东西,其中一个允许从一个数字转换为一个
NSNumber
类型

这里发生的事情是,您的字符被转换成ASCII等价物(实际上是一个整数,只是一个单字节整数-
char
),然后转换成
NSNumber
s97
。所以:
'a'->ASCII 97->包装在NSNumber中

您希望数组包含字符串,以便执行以下操作:

NSArray*arry=[NSArray数组,其对象为:@“a”、“b”、“c”、“nil]


NSArray
只能包含对象(而
NSNumber
是一个对象),这就是为什么必须使用
NSString
s。如果要在数组中使用字符,则必须使用c样式的数组。

使用[NSArray arrayWithObjects:@“a”、“b”、“c”、“nil];使用[NSArray arrayWithObjects:@“a”、“b”、“c”、“nil];回答得好。有关转换为NSNumber的信息对于解释OP看到的结果至关重要。回答得好。有关转换为NSNumber的信息对于解释OP看到的结果至关重要。