Значения NSMutableArray становятся «недействительными» - PullRequest
0 голосов
/ 09 ноября 2009

Я пытаюсь показать информацию базы данных в виде таблицы, а затем подробную информацию в представлении, моя проблема заключается в следующем:

Я создал NSMutableArray: NSMutableArray *myArray = [[NSMutableArray alloc]init]; Затем я заполнил его из базы данных MyObj *obj = [[MyObj alloc]initWithName:idObj];

Когда я показываю значения в методе tableview cellForRowAtIndexPath:, все идет хорошо, но когда я пытаюсь загрузить тот же массив в методе didSelectRowAtIndexPath:, значения в массивах «недопустимы».

Декларация NSMutableArray выглядит следующим образом:

@property (nonatomic, retain) NSMutableArray *myArray;

Вот код:

.h файл

NSMutableArray *antrosArray; 

@property(nonatomic, retain) NSMutableArray *antrosArray; 

.m файл

@synthesize antrosArray; 

//filling the array: 

Antro *antro = [[Antro alloc]initWithName:idAntro nombre:aName]; 
[self.antrosArray addObject:antro];

Моя проблема:

когда я получаю доступ к массиву из методов cellForRowAtIndexPath: tableView, все идет хорошо, но когда пользователь выбирает запись, я пытался прочитать массив в методе didSelectRowAtIndexPath:, и все значения в моем массиве недопустимы.

Массив есть, а также объект, но значения для объектов пусты, метод cellForRowAtIndexPath: очищает массив.

Ответы [ 2 ]

3 голосов
/ 09 ноября 2009

Кажется, вы определяете вторую локальную переменную с именем myArray. Вместо этого вы должны

self.myArray = [[[NSMutableArray alloc] init] autorelease];

На самом деле, вам, вероятно, следует использовать -initWithCapacity: вместо этого, но это другой вопрос.

Редактировать: Спасибо, Чак, за указание на мой пропущенный авто-релиз:)

0 голосов
/ 05 августа 2012

Используйте retain также во время определения.

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