NSMutableArray перезаписывается при каждом проходе в цикле - PullRequest
1 голос
/ 13 августа 2010

привет мастера какао - эта простая проблема заставляет меня ползать по стенам.У меня есть собственный класс, который называется Movie, который состоит из набора свойств и нескольких коллекций.Я успешно заполняю его с помощью FMDB и SQLite.Тем не менее, при каждом проходе через коллекцию результатов из БД мой addObject: кажется записывает весь массив:

SciFiLib = [[NSMutableArray alloc]init];
FMResultSet *SciFiResultSet = [db executeQuery:@"select Movie.*......];
Movie *m = [[Movie alloc] init];

while ([SciFiResultSet next]) {
m.movieID =[SciFiResultSet stringForColumn:@"movie_id"];
m.title = [SciFiResultSet stringForColumn:@"title"];
.....
[SciFiLib addObject: m];

На данный момент - у меня есть NSLog'd вывод m - и этосодержит другой фильм (название, идентификатор, дата выпуска и т. д., поэтому я знаю, что данные в порядке).Однако, начиная со второго прохода через цикл WHILE, каждый последующий addObject заменяет весь массив копиями следующего элемента данных.Итак, в конце цикла у меня есть 6 копий одних и тех же данных фильма.

Я отразил свой пользовательский класс здесь только с массивом названий фильмов, и это, похоже, сработало, но я быхотел бы собрать все свойства фильма (ов) для моих данных модели.Кто-нибудь может пролить свет на то, что может быть причиной такого поведения?

Заранее благодарен за вашу помощь и совет!

...

1 Ответ

5 голосов
/ 13 августа 2010

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

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