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

Tôi muốn thêm độ cao (int) vào mảng val. Điều này có khả thi không? khi chạy mã,Làm thế nào để thêm một giá trị số nguyên vào 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 

đây là đầu ra.

Ở đây, độ cao thực tế là 78.235,156, trong khi in mảng val.

Tôi nhận được các giá trị như "69398112"

Tôi nên làm gì?

Trả lời

19

Thêm số thay thế.

NSNumber* foo = [NSNumber numberWithInteger:42]; 

hoặc sử dụng literals đóng hộp:

NSNumber* foo = @(42); 

sau đó thêm foo.

48

Bạn chỉ có thể thêm con trỏ vào đối tượng vào một số NSMutableArray. Nếu bạn sử dụng lớp NSNumber mặc dù để bọc số nguyên của mình, thì bạn có thể thêm số đó vào mảng.

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

Hy vọng điều này sẽ hữu ích.

+0

xOut sẽ là một NSNumber * không phải là một int, trừ khi bạn cũng truyền intValue cho đối tượng được trả về bởi lastObject. – jer

+0

Cảm ơn bạn đã đánh bắt, cố định câu trả lời của tôi. –

+0

Bởi "con trỏ", tôi nghĩ bạn có nghĩa là "đối tượng" - ví dụ: thêm một 'char *' sẽ vẫn yêu cầu gói nó lên trong một đối tượng. –

1

Vấn đề là với NSLog chuỗi của bạn cụ thể là

NSLog(@"%d", val); 

%d là trong thực tế sự xác định định dạng cho một integer (int). Bạn đang truyền cho nó một đối tượng NSMutableArray.

Thay đổi NSLog để

NSLog(@"%@", val); 

Các %@ hy vọng một đối tượng, và điều này thường sẽ in ra [myObject description], trong trường hợp này mô tả về mảng val của bạn.

1

Chuyển đổi Int để NSNumber sau đó thêm vào mảng của bạn

1

Đây là một cách đơn giản: @(yourInt)

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

thông tin về at-compiler-directives

Các vấn đề liên quan