Как сохранить значение в NSMutableArray, используя теги кнопок в iPhone? - PullRequest
0 голосов
/ 15 июля 2011

У меня 10 кнопок, при нажатии на кнопки будет увеличиваться некоторое количество значений. Я хочу поместить значения в NSMutableArray. Но я не хочу добавлять значения, которые зависят от индекса кнопки, я хочу добавить значения в массив в том же порядке (от 0 до ArrayCount) при случайном нажатии любой кнопки.

Например:

        switch (btn.tag) {
                       case 0:
                             itemValue = itemValue + 15;         //item value is 30
                             [amountArray addObject:itemValue];          
                             break;

                       case 1:
                             itemValue = itemValue + 30;          //item value is 60
                             [amountArray addObject:itemValue];          
                             break;

                       case 2:
                             itemValue = itemValue + 25;           //item value is 50
                             [amountArray addObject:itemValue];          
                             break;

                       case 3:
                             itemValue = itemValue + 40;            //item value is 80
                             [amountArray addObject:itemValue];          
                             break;

                        case 4:                        //item value is 45
                             itemValue = itemValue + 15; 
                             [amountArray addObject:itemValue];          
                             break;

В этом случае я нажал кнопку в порядке индекса кнопки 4,3,2,1,0, и ожидаемый массив результатов равен

                       {45,80,50,60,30}. 

Если я использовал что-то подобное,

         [amountArray replaceObjectAtIndex:btn.tag withObject:itemValue];

и результат {30,60,50,80,45}.

Но я хочу хранить значения как обычно в массиве от 0 до arrayCount. При каждом нажатии кнопки это увеличивает некоторое значение, поэтому не следует допускать повторяющиеся значения , необходимо изменять только значения.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 июля 2011

NSMutableSet позволит избежать дублирования.

, поэтому вместо использования массива просто используйте NSMutableSet.

       NSMutableSet *amountSet=[[NSMutableSet alloc]init];   

       [amountSet addObject:itemValue];
0 голосов
/ 15 июля 2011

Вы добавляете int в массив, что неправильно, вам нужно использовать

[amountArray addObject:[NSNumber numberWithInt:itemValue]];

Также вам нужно проверить, доступно ли это значение в массиве, используя метод массива

if([array indexOfObject:[NSNumber numberWithInt:itemValue]] == NSNotFound) {
   //Add object here to mutable array
}

или нет, и позже вам нужно отсортировать массив, используя sortDescripter или NSPredicate.

...