дублирует данные при добавлении в таблицу - PullRequest
0 голосов
/ 13 сентября 2011

В моем приложении, когда я вставляю данные, нажимая на кнопку «Добавить», данные будут вставлены в базу данных, и table.record будет вставлен идеально, но когда я добавлю эти данные в таблицу, они дублируют данные базы данных. Вот код:

 NSString *insertData=[NSString stringWithFormat:@"insert into tbl_Bills(Amount,Note,Due_On) values ('%f','%@','%@')",addAmountInDouble,val,due];
[database executeQuery:insertData];

NSLog(@"inert query: %@",insertData);
NSLog(@"value inserted");

NSString *countQuery = [NSString stringWithFormat:@"Select Bill_Id,Entry_Date,Amount,Note,Due_On from tbl_Bills"];
NSArray *countArray1 = [database executeQuery:countQuery];
NSLog(@"Query:%@",countArray1);
[BillTableArray addObjectsFromArray:countArray1];

NSLog(@"Count array %@",countQuery);

NSLog(@"table array:%@",BillTableArray);
[database close];
[table reloadData];

массив массива в порядке, но массив таблиц дублирует значение. Я также инициализирую массив таблиц в методе viewDidLoad().

Ответы [ 4 ]

1 голос
/ 13 сентября 2011

Прежде всего вам необходимо очистить массив таблиц перед добавлением новых объектов:

[BillTableArray removeAllObjects];

после добавления новых обновленных объектов:

[BillTableArray addObjectsFromArray:countArray1];
1 голос
/ 13 сентября 2011

BillTableArray предположительно содержит все данные, которые вы уже имели в таблице.Когда вы повторно запросите базу данных, чтобы получить добавленную стоимость, вы будете возвращать все, а затем добавлять все снова.

Итак, либо

  • Специально добавьте только новые объекты в BillTableArray
  • Измените ваш countQuery, чтобы он возвращал только новый объект
  • Заменитевсе содержимое BillTableArray с countArray1
1 голос
/ 13 сентября 2011

[BillTableArray addObjectsFromArray:countArray1]; добавляет все объекты из массива countArray1.Поэтому я предполагаю, что существующие объекты в BillTableArray не удаляются перед добавлением новых объектов.Это создает дубликаты.Чтобы удалить дубликаты, просто удалите все объекты BillTableArray, а затем добавьте объекты из countArray1.

Просто небольшая заметка, пожалуйста, убедитесь, что вы называете переменные, начиная со строчного алфавита.

1 голос
/ 13 сентября 2011

Это потому, что вы не очищаете данные из BillTableArray перед добавлением в них новых данных.Вы перезапускаете свой запрос по всей таблице - таким образом снова извлекаете все свои записи, включая те, которые вы уже настроили в BillTableArray при начальной загрузке представления.

Проблема заключается в следующей строке:

[BillTableArray addObjectsFromArray:countArray1];

BillTableArray уже загружен данными из вашего первоначального вызова viewDidLoad, но выполненный вами запрос снова получает все эти данные из базы данных, и эта строка добавляет все эти объекты в массив во второй раз.Таким образом, вы, вероятно, видите дубликаты всего , за исключением недавно добавленных элементов.

Вам, вероятно, просто нужно сделать:

BillTableArray = [countArray1 retain];

или что-то подобное (не забудьтесохранить / освободить объекты соответствующим образом, чтобы гарантировать, что вы не потеряете их и не утечете, не знаете, как объявлен BillTableArray.

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