简体   繁体   中英

How to add an integer value into NSMutableArray?

NSMutableArray * val;
val = [[NSMutableArray alloc] initWithCapacity:15];

/*int outlineWidth = barOutlineWidth;
int outlineHalfWidth = (outlineWidth > 1) ? outlineWidth * 0.5f : 0;
 */
for ( Bar * obj in values )
{  
  // calcualte the bar size
  float value  = [obj value];
  float scale  = ( value / maxValue );

  // shift the bar to the top or bottom of the render line
  int pointY   = lineHeight + ( (lineWidth * 0.5f) * ( ( value >= 0.0f ) ? -1 : 1 ) );
  int barHeight = height * scale;
  NSLog(@"%d", barHeight);   
  CGRect barRect = CGRectMake(pointX, pointY, width, -barHeight);
  [val addObject:[NSNumber numberWithInt:barHeight]];
                     NSLog(@"%d", val);

I want to add the barheight (int) into array val. Is this possible? while running the code,

session started at 2010-09-16 13:21:50 +0530.]
2010-09-16 13:21:53.791 BarGraphSample[3168:20b] 78
2010-09-16 13:21:53.797 BarGraphSample[3168:20b] 69398112
2010-09-16 13:21:53.807 BarGraphSample[3168:20b] 235
2010-09-16 13:21:53.812 BarGraphSample[3168:20b] 69398112
2010-09-16 13:21:53.813 BarGraphSample[3168:20b] 156
2010-09-16 13:21:53.814 BarGraphSample[3168:20b] 69398112

this is the output.

Here the actual barheights are 78,235,156, while printing the array val.

Im getting like values like "69398112"

What should I do?

You can only add pointers to objects to an NSMutableArray . If you use the NSNumber class though to wrap your integer, you should then be able to add that to the array.

int x = 10;
NSNumber* xWrapped = [NSNumber numberWithInt:x];
NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:15];
[array addObject:xWrapped];
int xOut = [[array lastObject] intValue]; //xOut == x;

Hope this helps.

Add a number instead.

NSNumber* foo = [NSNumber numberWithInteger:42];

or using boxed literals:

NSNumber* foo = @(42);

then add foo.

将Int转换为NSNumber,然后添加到您的数组

The issue is with your NSLog string namely

NSLog(@"%d", val);

%d is in fact the format specifier for an integer (int) . You are passing it a NSMutableArray object.

Change the NSLog to

NSLog(@"%@", val);

The %@ expects an object, and this will typically print out [myObject description] , in this case a description of your val array.

This is a simple way: @(yourInt)

int value = 5;
NSMutableArray * anArray  = [[NSMutableArray alloc] init];
[anArray addObject: @(value)];

more information about at-compiler-directives

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM