如何在iPhone中的NSMutableArray中动态更改值?

时间:2011-07-14 12:42:35

标签: iphone nsmutablearray

我有10个按钮,我使用开关盒写了按钮动作。当我点击每个按钮时,它会增加一些数值。如果我使用10个不同的变量来设置计数值变量,它将起作用。但是,还有其他任何可能的方法来实现这一目标吗?

我想在可变数组中动态更改值。

例如:

    -(IBAction) btnAction : (id) sender{

       switch (btn.tag) {

                case 0:
               // amountArray is mutable array.

                    startCocoCount = startCocoCount + 10;

                    //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                //[amountArray addObject:str];

                break;

            case 1:

                startCocoCount = startCocoCount + 15;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];


                break;

            case 2:
                 startCocoCount = startCocoCount + 20;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 3:
                 startCocoCount = startCocoCount + 25;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];


                break;

            case 4:
                 startCocoCount = startCocoCount + 30;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];


                break;

            case 5:
                  startCocoCount = startCocoCount + 35;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 6:
                  startCocoCount = startCocoCount + 40;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 7:

                         startCocoCount = startCocoCount + 50;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 8:

                        startCocoCount = startCocoCount + 60;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 9:
                 startCocoCount = startCocoCount + 20;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            case 10:
                        startCocoCount = startCocoCount + 20;

                //NSString *str = [NSString stringWithFormat:@"%d", startCocoCount];

                        //[amountArray addObject:str];

                break;

            default:
                break;
        }
}

在表格视图中,

cell.textLabel.text = [amountArray objectAtindex:indexPath];

如果我使用单个变量,它将不会为所有条件设置,那么我该如何实现呢?

3 个答案:

答案 0 :(得分:1)

NSNumber允许您存储到数组中。要通过索引访问数组,您需要使用NSNumber预先填充数组,以便索引可用。

//You will need to know the index otherwise use a dictionary with named keys
NSNumber *num = [amountArray objectAtIndex:index];
num = [NSNumber numberWithInt:[num intValue] + 20];
[amountArray replaceObjectAtIndex:index withObject:num];

答案 1 :(得分:1)

你可以试试这个。它会起作用。

int startCocoCount;

NSMutableArray *dataArray = [[NSMutableArray alloc] init];
for(int i=0;i<11;i++)
{
    [dataArray addObject:@"0"];
}

对于该方法,它将如下:

-(IBAction) btnAction : (id) sender{

    switch ([sender tag]) {

        case 0:

            startCocoCount = startCocoCount + 10;

            [dataArray replaceObjectAtIndex:0 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:0] intValue] + startCocoCount]];

            break;

        case 1:

            startCocoCount = startCocoCount + 15;

            [dataArray replaceObjectAtIndex:1 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:1] intValue] + startCocoCount]];

            break;

        case 2:
            startCocoCount = startCocoCount + 20;

            [dataArray replaceObjectAtIndex:2 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:2] intValue] + startCocoCount]];

            break;

        case 3:
            startCocoCount = startCocoCount + 25;

            [dataArray replaceObjectAtIndex:3 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:3] intValue] + startCocoCount]];

            break;

        case 4:
            startCocoCount = startCocoCount + 30;

            [dataArray replaceObjectAtIndex:4 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:4] intValue] + startCocoCount]];

            break;

        case 5:
            startCocoCount = startCocoCount + 35;

            [dataArray replaceObjectAtIndex:5 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:5] intValue] + startCocoCount]];

            break;

        case 6:
            startCocoCount = startCocoCount + 40;

            [dataArray replaceObjectAtIndex:6 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:6] intValue] + startCocoCount]];

            break;

        case 7:

            startCocoCount = startCocoCount + 50;

            [dataArray replaceObjectAtIndex:7 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:7] intValue] + startCocoCount]];

            break;

        case 8:

            startCocoCount = startCocoCount + 60;

            [dataArray replaceObjectAtIndex:8 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:8] intValue] + startCocoCount]];

            break;

        case 9:
            startCocoCount = startCocoCount + 20;

            [dataArray replaceObjectAtIndex:9 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:9] intValue] + startCocoCount]];

            break;

        case 10:
            startCocoCount = startCocoCount + 20;

            [dataArray replaceObjectAtIndex:10 withObject:[NSString stringWithFormat:@"%d", [[dataArray objectAtIndex:10] intValue] + startCocoCount]];

            break;

        default:
            break;
    }
}

如果您有任何疑问,请与我联系。

答案 2 :(得分:0)

我认为你可以像这样简化

 -(IBAction) btnAction : (id) sender{

startCocoCount = startCocoCount + btn.tag;
}

您可以设置按钮的标签以保存值。