2010-09-16 17 views
17
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); 

Chcę dodać barheight (int) do tablicy val. Czy to możliwe? podczas działania kodu,Jak dodać wartość całkowitą do NSMutableArray?

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 

jest to wynik.

Tutaj rzeczywiste barheights są 78.225.156, podczas drukowania tablicy val.

Im uzyskanie jak wartości jak "69398112"

Co należy zrobić?

Odpowiedz

19

Dodaj zamiast tego numer.

NSNumber* foo = [NSNumber numberWithInteger:42]; 

lub wykorzystujące ramkach literały:

NSNumber* foo = @(42); 

następnie dodać foo.

48

Możesz dodawać wskaźniki do obiektów tylko do NSMutableArray. Jeśli jednak używasz klasy NSNumber do owijania liczby całkowitej, powinieneś móc dodać ją do tablicy.

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

Mam nadzieję, że to pomoże.

+0

xOut będzie NSNumber * nie int, chyba że również przekazać intValue do obiektu zwróconego przez lastObject. – jer

+0

Dzięki za złapanie tego, poprawiłem moją odpowiedź. –

+0

Przez "wskaźniki" myślę, że masz na myśli "obiekty" - np. dodanie "char *" nadal wymagałoby zawinięcia w obiekcie. –

1

Problem jest z ciągiem NSLog mianowicie

NSLog(@"%d", val); 

%d jest w rzeczywistości specifier format dla integer (int). Przekazujesz mu obiekt NSMutableArray.

Zmiana NSLog do

NSLog(@"%@", val); 

%@ spodziewa się obiektu, a to zazwyczaj wydrukować [myObject description], w tym przypadku opis swojej val tablicy.

1

Konwersja Int do NSNumber następnie dodać do tablicy

1

Jest to prosty sposób: @(yourInt)

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

więcej informacji na temat at-compiler-directives

Powiązane problemy