2011-09-13 8 views
0

私のアプリケーションでは、追加ボタンをクリックしてデータを挿入するとデータがデータベースに挿入され、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]; 

カウント配列は結構ですが、テーブルの列がvalue..iもviewDidLoad()方法でテーブルの配列を初期化複製します。

+0

うんテーブル列に値を複製します。 – Developer

+0

はテーブル配列のコードを提供できますか? – Maulik

+0

あなたは完全なコードを提供してください。 – Ron

答えて

1

新しいオブジェクトを追加する前に、あなたのテーブルの列をクリアするために必要なすべての最初:

[BillTableArray removeAllObjects];

後に更新された新しいオブジェクトを追加します。

[BillTableArray addObjectsFromArray:countArray1]; 
1

これは、新しいデータを追加する前にBillTableArrayからデータを消去しないためです。テーブル全体でクエリを再実行しているため、初期ビューの読み込み時にBillTableArrayで既に設定したレコードを含め、すべてのレコードを再度取得します。

問題は、この行です:

[BillTableArray addObjectsFromArray:countArray1]; 
BillTableArrayはすでに初期のviewDidLoad呼び出しからのデータがロードされていますが、実行されたクエリは、再びデータベースからこのデータのすべてを取得し、この行はすべてを追加して

これらのオブジェクトのアレイへの2回目のアクセスを許可します。だからおそらく、を除き、新しく追加されたアイテムのを除いて、重複が見られているでしょう。

あなたはおそらく実行する必要があります。

BillTableArray = [countArray1 retain]; 

または/解除を保持することを忘れないでください(似た何かが、あなたがそれらを失うかBillTableArrayが宣言されている方法がわからない、それらを漏洩しないように適切なオブジェクト。

1

BillTableArrayは、おそらくあなたはすでにテーブルに持っていたすべてのデータが含まれています。あなた、あなたの付加価値を得るために再照会データベース、あなたは再びそれをすべて追加し、その後、すべてのものを返すことになるとき。

ので、どちらか

  • 具体的countArray1
1

[BillTableArray addObjectsFromArray:countArray1];BillTableArrayのすべての内容を置き換えのみ新しいオブジェクトを返します

  • にごcountQueryを変更
  • BillTableArray
  • にのみ新しいオブジェクトを追加し、アレイからすべてのオブジェクトを追加しますcountArray1。だから私は BillTableArrayの既存のオブジェクトは、新しいオブジェクトを追加する前に削除されていないと思います。これにより重複が作成されます。重複を削除するには、 BillTableArrayのすべてのオブジェクトを削除してから、 countArray1のオブジェクトを追加してください。

    小文字のアルファベットで始まる変数の名前を確認してください。

    関連する問題