Как добавить целочисленное значение в 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);
Я хочу добавить barheight (int) в массив val.
Это возможно?
во время выполнения кода,
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
это результат.
Здесь фактические столбцы составляют 78 235 156,
при печати массива val.
Im получает такие же значения, как "69398112"
Что мне делать?
Ответы
Ответ 1
Вы можете добавлять указатели только к объектам в NSMutableArray
. Если вы используете класс NSNumber
, но для того, чтобы обернуть целое число, вы должны добавить его в массив.
int x = 10;
NSNumber* xWrapped = [NSNumber numberWithInt:x];
NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:15];
[array addObject:xWrapped];
int xOut = [[array lastObject] intValue]; //xOut == x;
Надеюсь, что это поможет.
Ответ 2
Добавьте вместо этого число.
NSNumber* foo = [NSNumber numberWithInteger:42];
или используя литералы в коробке:
NSNumber* foo = @(42);
затем добавьте foo.
Ответ 3
Проблема связана с вашей строкой NSLog
, а именно
NSLog(@"%d", val);
%d
на самом деле является спецификатором формата для integer (int)
. Вы передаете ему объект NSMutableArray.
Измените NSLog
на
NSLog(@"%@", val);
%@
ожидает объект, и обычно это будет печатать [myObject description]
, в этом случае описание вашего массива val.
Ответ 4
Преобразовать Int в NSNumber, а затем добавить в ваш массив
Ответ 5
Это простой способ: @(yourInt)
int value = 5;
NSMutableArray * anArray = [[NSMutableArray alloc] init];
[anArray addObject: @(value)];
Дополнительная информация о at-compiler-directives