开发者

How to add an integer to an array?

This must be quite basic, but I was wondering how to add an integer to an array?

I know I can add strings like this:

NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject:@"0"];
[trArray addObject:@"1"开发者_StackOverflow];
[trArray addObject:@"2"];
[trArray addObject:@"3"];

But I guess I can't simply add integers like so:

NSMutableArray *trArray = [[NSMutableArray alloc] init];
[trArray addObject:0];
[trArray addObject:1];
[trArray addObject:2];
[trArray addObject:3];

At least the compiler isn't happy with that and tells me that I'm doing a cast without having told it so.

Any explanations would be very much appreciated.


Yes that's right. The compiler won't accept your code like this. The difference is the following:

If you write @"a String", it's the same as if you created a string and autoreleased it. So you create an object by using @"a String".

But an array can only store objects (more precise: pointers to object). So you have to create objects which store your integer.

NSNumber *anumber = [NSNumber numberWithInteger:4];
[yourArray addObject:anumber];

To retrive the integer again, do it like this

NSNumber anumber = [yourArray objectAtIndex:6];
int yourInteger = [anumber intValue];

I hope my answer helps you to understand why it doesn't work. You can't cast an integer to a pointer. And that is the warning you get from Xcode.

EDIT:

It is now also possible to write the following

[yourArray addObject:@3];

which is a shortcut to create a NSNumber. The same syntax is available for arrays

@[@1, @2];

will give you an NSArray containing 2 NSNumber objects with the values 1 and 2.


You have to use NSNumbers I think, try adding these objects to your array: [NSNumber numberWithInteger:myInt];

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

[trArray addObject: yourNumber];


You can also use this if you want to use strings:

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:[NSString stringWithFormat:@"%d",1]];
[[array objectAtIndex:0] intValue];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜