2011-10-21 10 views
19

Tôi muốn thêm [NSDecimalNumber numberWithInt:i] vào một mảng sử dụng cho vòng lặp.Làm thế nào để thêm các đối tượng vào một NSArray sử dụng cho vòng lặp?

Nó là hardcoded:

NSArray *customTickLocations = [NSArray arrayWithObjects: [NSDecimalNumber numberWithInt:1],[NSDecimalNumber numberWithInt:2],[NSDecimalNumber numberWithInt:3],[NSDecimalNumber numberWithInt:4],[NSDecimalNumber numberWithInt:5],[NSDecimalNumber numberWithInt:6],[NSDecimalNumber numberWithInt:7],[NSDecimalNumber numberWithInt:8],[NSDecimalNumber numberWithInt:9],[NSDecimalNumber numberWithInt:10],[NSDecimalNumber numberWithInt:11],[NSDecimalNumber numberWithInt:12],nil]; 

tôi muốn như thế này, nhưng tôi chỉ có thể thêm một đối tượng ở đây ....

for (int i=0; i<totalImagesOnXaxis; i++) 
{ 
    customTickLocations = [NSArray arrayWithObject:[NSDecimalNumber numberWithInt:i]]; 
} 

Xin hãy giúp tôi ra khỏi đây, Cảm ơn trước , Madan

+0

Tại sao bạn vẫn cần mảng? Có vẻ như giá trị trong mảng tại chỉ mục 'i' luôn là' i'. – raymi

Trả lời

40

NSArraykhông thể thay đổi. Sử dụng phiên bản có thể thay đổi, NSMutableArray.

20
NSMutableArray * customTickLocations = [NSMutableArray new]; 
for (int idx = 0; idx < 12; ++idx) { 
    [customTickLocations addObject:[NSDecimalNumber numberWithInt:idx]]; 
} 

... 
5
NSMutableArray *customTickLocations = [NSMutableArray array]; 
for (int i=0; i<totalImagesOnXaxis; i++) 
{ 
    [customTickLocations addObject:[NSDecimalNumber numberWithInt:i]]; 
} 

Lớp NSMutableArray tuyên bố giao diện chương trình đối với các đối tượng quản lý một mảng sửa đổi của các đối tượng. Lớp này cho biết thêm thao tác chèn và xóa đến hành vi mảng xử lý cơ bản kế thừa từ NSArray

NSMutableArray Class Reference

5
NSMutableArray * customTickLocations = [[NSMutableArray alloc] init]; 
for(int i = 0; i<WhateverNoYouWant;i++){ 
NSDecimalNumber * x = [NSDecimalNumber numberWithInt:i] 
[customTickLocations addObject:x] 

    } 
9

bạn không thể thêm các đối tượng tại thời gian chạy để NSArray.For thêm hoặc loại bỏ đối tượng tại Run thời gian bạn phải sử dụng NSMutableArray.

NSMutableArray *mutableArray=[[NSMutableArray alloc] init]; 
for (int i=0; i<10; i++) { 
    [mutableArray addObject:[NSDecimalNumber numberWithInt:i]]; 
} 
4

tôi thấy rằng việc sử dụng kỹ thuật này là một cách tuyệt vời để dễ dàng thêm một vài yếu tố hơn để một NSArray, đây là câu trả lời tôi đang tìm kiếm khi tôi đến chủ đề này nên đang đăng nó vì nó là một bổ sung dễ dàng tuyệt vời.

Nếu tôi muốn thêm một mảng mới để mảng hiện tại của tôi

currentArray = [currentArray arrayByAddingObjectsFromArray: newArray]; 
1

NSArray add đối tượng như thế này:

NSArray *arr = @["1","2","3","4"]; 

Tôi nghĩ NSArray không thể addObject như NSMutableArray. Bạn nên thử:

NSMutableArray *mulArr = [NSMutableArray new]; 
[mulArr addObject:[NSDecimalNumber numberWithInt:number]];