2010-06-07 94 views
3
unichar myChar = [myString characterAtIndex:0]; 
[myNSMutableArray addObject:myChar]; 

我想将一个字符串的第一个字符插入数组,创建一个字符数组。第一行不会给我一个错误。但是,第二行提供了以下错误:warning: passing argument 1 of 'addObject:' makes pointer from integer without a castObjective-C:用字符串索引初始化字符char

这也使应用程序崩溃,出现“错误地址”错误。我认为这个错误是由于内存分配问题。有人可以对此有所了解。

回答

4

一种选择是将字符作为字符串添加到您的数组:

unichar myChar = [myString characterAtIndex:0]; 
NSString * charString = [NSString stringWithFormat:@"%c", myChar]; 
[myNSMutableArray addObject:charString]; 

注意,这可能是矫枉过正。

+0

这给了我正是我要找的东西,谢谢。 – 2010-06-07 15:05:47

5

您只能将对象添加到数组中。 unichar是一种原始数据类型。您必须将其包装在NSNumber中。一个unicharunsigned short,所以你可以使用:

[myNSMutableArray addObject:[NSNumber numberWithUnsignedShort:[myString characterAtIndex:0]]]; 
+0

我之前看到过这个函数,但是这是一个数字。我试图用一个实际的角色来做同样的事情。我找不到一个字符的等效函数,所以我写了我发布的原始代码。对于角色是否有类似的功能,或者这通常不是在Objective-C中完成的吗? (对不起,我是新手语言) – 2010-06-07 14:40:36

+0

字符*本质上是一个数字(实际上,“unichar”只是一个'unsigned short')。 – mipadi 2010-06-07 14:43:12

+0

然后没有办法得到索引0的字符串“字符串”,并得到字母S返回?我为这种困惑道歉,也许它不是我需要的字符,也许是其他的东西? – 2010-06-07 14:46:07