NSMutableArray insertObject atIndex выдает - PullRequest
0 голосов
/ 31 мая 2011

На этом сайте есть много примеров о добавлении в NSMutableArray, и я смотрел на многие, но я все еще не понимаю (весьма возможно) или упускаю что-то фундаментальное.

Я пытаюсь добавитьк NSMutableArray через цикл for.Я хочу отслеживать координаты кнопок x, y, используя тег кнопки в качестве ключа / индекса, чтобы я мог изменить кнопку, когда пользователь нажимает на нее.Это все без ИБ.

Мой init выглядит следующим образом:

self.tmpXpos = [[NSMutableArray alloc] init];
self.tmpYpos = [[NSMutableArray alloc] init];

[self.tmpXpos insertObject: [NSNull null] atIndex: 0];

[self.tmpYpos insertObject: [NSNull null] atIndex: 0];
** Я добавилэто после прочтения о «создании» массива и заполнении его нулем.

В цикле:

NSUInteger btag = button.tag;// NSUInterger согласно справке

>>NSNumber *xNumber = [NSNumber numberWithInteger:[self xpos]]; // NSNumber as an Object wrapper
>>NSNumber *yNumber = [NSNumber numberWithInteger:[self ypos]];


>>[self.tmpXpos insertObject:xNumber atIndex:btag];
>>[self.tmpYpos insertObject:yNumber atIndex:btag];

NSLog (@ "% d,% @,% @", btag, xNumber, yNumber);

Записи журнала выглядят нормально:

2,64,0

3,128,0

и т. Д. Для каждой кнопки, добавляемой вэкран.

Во время отладки - tmpXpos и tmpYpos, перечисленные как «0 Objects» в self.

Я получаю информацию таким образом:

NSUIntegertmpSt = [self.sTags integerValue];

NSNumber * tmpX = [self.tmpXpos objectAtIndex: tmpSt];

NSNumber * tmpY = [self.tmpYpos objectAtIndex: tmpSt];

int tmpPositionX = [tmpX intValue];

int tmpPositionY = [tmpY intValue];

NSLog (@ "% d,% d", tmpPositionX, tmpPositionY);

NSLog дает 0, 0

Я очень ценю любые рекомендации или вопросы, которые у вас могут возникнуть, поскольку «проверки работоспособности» этого сайта спасли мой бекон в прошлом.

Я пока игнорирую утечки памяти, но они у меня в голове.Не беспокойтесь там.По иронии судьбы у меня есть пара других массивов, которые работают просто отлично, но исключение состоит в том, что они не заполняются через цикл.

Наконец, код работает нормально, так как кнопка в позиции 0,0 изменяется в соответствии с дизайном, LOL, но не для любой другой позиции.

Еще раз спасибо!

Neil

Ответы [ 2 ]

0 голосов
/ 04 июня 2011

Деревья за лесом отвечают. Я хотел заполнить массив количеством, однако массив ожидает, что это количество будет в числовой последовательности. В моих данных не было «пробелов», но они также не были в последовательности; I.E., 1,2,3,6,7,12 и т. Д. Итак, как мне показало user397313, NSDictionary - это способ работы с такими данными.

0 голосов
/ 31 мая 2011

Я думаю, что ваша проблема в том, что вы создаете NSNumbers с методом numberWithInteger, когда NSUInteger на самом деле представляет собой длинную без знака.Поэтому попробуйте

xNumber = [NSNumber numberWithUnsignedLong: [self xpos]];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...