在添加到表中时复制数据

时间:2011-09-13 10:19:50

标签: iphone objective-c xcode

在我的应用程序中,当我通过单击添加按钮数据插入数据将插入数据库和table.record将完美插入,但当我将该数据添加到表中时,它复制数据库数据..代码:< / p>

 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];

count数组很好,但是表数组重复了值.i也用viewDidLoad()方法初始化表数组。

4 个答案:

答案 0 :(得分:1)

这是因为在将新数据添加到BillTableArray中之前,您不会清除数据。您将在整个表中重新运行查询 - 从而再次检索所有记录,包括您在初始视图加载时已在BillTableArray中设置的记录。

问题在于这一行:

[BillTableArray addObjectsFromArray:countArray1];

BillTableArray已经加载了初始viewDidLoad调用的数据,但是您执行的查询再次从数据库中检索了所有这些数据,并且这一行将第二次将所有这些对象添加到数组中。所以你可能会看到所有内容的重复,除了新添加的项目。

您可能只需要这样做:

BillTableArray = [countArray1 retain];

或类似的东西(不要忘记保留/释放对象以确保不会丢失或泄漏它们,不确定如何声明BillTableArray。

答案 1 :(得分:1)

BillTableArray可能包含您在表格中已有的所有数据。当您重新查询数据库以获取增值时,您将返回所有内容,然后再次添加它。

所以,

  • 专门只将新对象添加到BillTableArray
  • 将countQuery更改为仅返回新对象
  • BillTableArray的所有内容替换为countArray1

答案 2 :(得分:1)

[BillTableArray addObjectsFromArray:countArray1];添加数组countArray1中的所有对象。所以我想在添加新对象之前不会删除BillTableArray中的现有对象。这会产生重复。要删除重复项,只需删除BillTableArray的所有对象,然后添加countArray1中的对象。

请注意,请确保将变量命名为小写字母。

答案 3 :(得分:1)

首先,您需要在添加新对象之前清除表数组:

[BillTableArray removeAllObjects];

添加新的更新对象后:

[BillTableArray addObjectsFromArray:countArray1];