在我的应用程序中,当我通过单击添加按钮数据插入数据将插入数据库和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()
方法初始化表数组。
答案 0 :(得分:1)
这是因为在将新数据添加到BillTableArray中之前,您不会清除数据。您将在整个表中重新运行查询 - 从而再次检索所有记录,包括您在初始视图加载时已在BillTableArray中设置的记录。
问题在于这一行:
[BillTableArray addObjectsFromArray:countArray1];
BillTableArray已经加载了初始viewDidLoad调用的数据,但是您执行的查询再次从数据库中检索了所有这些数据,并且这一行将第二次将所有这些对象添加到数组中。所以你可能会看到所有内容的重复,除了新添加的项目。
您可能只需要这样做:
BillTableArray = [countArray1 retain];
或类似的东西(不要忘记保留/释放对象以确保不会丢失或泄漏它们,不确定如何声明BillTableArray。
答案 1 :(得分:1)
BillTableArray
可能包含您在表格中已有的所有数据。当您重新查询数据库以获取增值时,您将返回所有内容,然后再次添加它。
所以,
BillTableArray
BillTableArray
的所有内容替换为countArray1
答案 2 :(得分:1)
[BillTableArray addObjectsFromArray:countArray1];
添加数组countArray1中的所有对象。所以我想在添加新对象之前不会删除BillTableArray
中的现有对象。这会产生重复。要删除重复项,只需删除BillTableArray
的所有对象,然后添加countArray1
中的对象。
请注意,请确保将变量命名为小写字母。
答案 3 :(得分:1)
首先,您需要在添加新对象之前清除表数组:
[BillTableArray removeAllObjects];
添加新的更新对象后:
[BillTableArray addObjectsFromArray:countArray1];