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

Barheight'ı (int) dizi değerlerine eklemek istiyorum. Bu mümkün mü? kod çalışırken , NSMutableArray içine tamsayı değeri nasıl eklenir?

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 

bu

çıkıştır.

Dizisel değerler yazdırılırken, buradaki gerçek ağırlıklar 78,235,156, .

Im "69398112"

ne yapmalıyım gibi değerler gibi oluyor?

cevap

19

Bunun yerine bir sayı ekleyin.

NSNumber* foo = [NSNumber numberWithInteger:42]; 

kullanılarak veya kutulu değişmezleri:

NSNumber* foo = @(42); 

sonra foo ekleyin.

48

Nesnelere yalnızca NSMutableArray işaretçilerine ekleyebilirsiniz. Tam sayınızı sarmak için NSNumber sınıfını kullanırsanız, bunu diziye ekleyebilmeniz gerekir.

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

Bu yardımcı olur umarım.

+0

xout, * değil bir int bir NSNumber olacak sürece Ayrıca, lastObject tarafından döndürülen nesneye intValue değerini iletin. – jer

+0

Bunu yakalamak için teşekkürler, cevabımı düzeltti. –

+0

"İşaretçiler" ile "nesneleri" kastettiğinizi düşünüyorum - ör. char * 'eklenmesi hala bir nesneye sarılmasını gerektirir. –

1

konu yani

NSLog(@"%d", val); 

%d aslında bir integer (int) için biçim belirtecidir sizin NSLog dize ile olduğunu. Bir NSMutableArray nesnesini geçiriyorsunuz.

Değişim NSLog

NSLog(@"%@", val); 

%@

bir nesneyi beklediğini ve bu genellikle bu durumda, sizin val dizinin bir açıklama [myObject description] basar. NSNumber için

1

dönüştürme Int ardından diziye eklemek

1

Bu basit bir yoludur: @(yourInt)

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

fazla bilgi hakkında at-compiler-directives

İlgili konular