如何向数组添加整数?

n.e*_*ind 5 iphone cocoa-touch objective-c

这一定是非常基本的,但我想知道如何在数组中添加整数?

我知道我可以添加这样的字符串:

NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject:@"0"];
[trArray addObject:@"1"];
[trArray addObject:@"2"];
[trArray addObject:@"3"];
Run Code Online (Sandbox Code Playgroud)

但我想我不能简单地添加这样的整数:

NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject:0];
[trArray addObject:1];
[trArray addObject:2];
[trArray addObject:3];
Run Code Online (Sandbox Code Playgroud)

至少编译器对此并不满意,并且告诉我,我正在进行演员而没有告诉它.

任何解释都将非常感谢.

San*_*ier 27

恩,那就对了.编译器不会接受这样的代码.区别在于:

如果你写@"a String",它就像你创建一个字符串并自动释放它一样.因此,您可以使用创建对象@"a String".

但是数组只能存储对象(更精确:指向对象的指针).所以你必须创建存储整数的对象.

NSNumber *anumber = [NSNumber numberWithInteger:4];
[yourArray addObject:anumber];
Run Code Online (Sandbox Code Playgroud)

要再次检索整数,请执行此操作

NSNumber anumber = [yourArray objectAtIndex:6];
int yourInteger = [anumber intValue];
Run Code Online (Sandbox Code Playgroud)

我希望我的回答可以帮助你理解为什么它不起作用.您不能将整数强制转换为指针.这就是你从Xcode得到的警告.

编辑:

现在也可以编写以下内容

[yourArray addObject:@3];
Run Code Online (Sandbox Code Playgroud)

这是创建NSNumber的快捷方式.数组可以使用相同的语法

@[@1, @2];
Run Code Online (Sandbox Code Playgroud)

将为您提供一个NSArray,其中包含2个值为1和2的NSNumber对象.


mse*_*dio 7

您必须使用NSNumbers,尝试将这些对象添加到您的数组中:[NSNumber numberWithInteger:myInt];

NSMutableArray *trArray = [[NSMutableArray alloc] init];     
NSNumber *yourNumber = [[NSNumber alloc] numberWithInt:5];

[trArray addObject: yourNumber];
Run Code Online (Sandbox Code Playgroud)