如何将C int放入NSArray?

时间:2014-05-11 11:18:12

标签: ios objective-c c arrays nsarray

当我使用普通allocinitWithObjects制作一个NSArray时,索引为[0]的对象是一个字符串,一切正常。但是,如果第一个对象是int,那么:

NSArray *anotherArrayObject = [[NSArray alloc]initWithObjects:  5 , 6 , 3 , 1 ,@"3412817", nil];

我收到一个错误(“将指针转换为不兼容的整数发送'int'到'id'类型的参数”)和一个警告(“ARC禁止将'int'隐式转换为'id'”)。

对此有何修复?

2 个答案:

答案 0 :(得分:2)

NSArray只能包含Objective-C对象(例如NSObject及其子类*的实例),而不是 int (或 long )等C基本类型, char * 等)。您将需要装箱或“集装箱”#34;你的价值观。

例如:

[ [ NSArray alloc ] initWithObjects:[ NSNumber numberWithInt:5 ], nil ] ;

或者,使用NSNumber文字表达式的相同代码:

[[NSArray alloc] initWithObjects:@5, nil]

答案 1 :(得分:1)

NSArray只能包含对象,因此int需要转换为NSNumber才能包含在NSArray中。

更新问题陈述:

NSArray *anotherArrayObject = @[ @5, @6, @3, @1, @"3412817" ];

以下是将int转换为NSNumber并将其放入NSArray的示例。

使用NSNumber文字语法:

NSArray *a = @[@5];
NSArray *b = @[@5, @6];

代替更详细的:

NSArray *a = [[NSArray alloc] initWithObjects:@5, nil];

如果您有int变量:

int i = 3;
NSArray *a = @[@(i)];

为了恢复int

int i = [a[0] intValue];