我正在尝试订购UITableView行。我已经实现了必要的方法,它适用于我的可变数组。但是,我不知道如何将此更改应用于我的数据库。
我的数据库有favs列
CREATE TABLE favs
(
id
INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
w_name
文字
);
我正在使用"插入或替换为favs(w_name)值('%@%');"用于向favs数据库插入新单词的语句。如何更改两个记录的id,以便我可以按id的顺序列出favs值,以便对它们进行排序。例如,我想从这个
更改我的表ID | w_name
1 |苹果
2 |香蕉
3 |橙
到
ID | w_name
1 |苹果
3 |香蕉
2 |橙
如果密钥不是主要的,我可以通过使用来更改id 更新喜欢SET id =(CASE id WHEN 2 THEN 3 ELSE 2 END) WHERE id IN(2,3);
如果我喜欢这样,我每次插入记录时都需要自己计算id。那么,如何重新排序ID以便我将UITableView中的更改反映到数据库中。
答案 0 :(得分:0)
在所有情况下,如果要重新排序TableView,您必须重新排序提供TableView的数组。 您可以再次执行查询。 或者使用那个
yourArray = [yourArray sortedArrayUsingComparator:^NSComparisonResult(TYPE *p1, TYPE *p2){
return [p1 compare:p2];
}];
以[tableView reloadData];
答案 1 :(得分:0)
在表格中添加另一列并将其命名为sort。在那里,您将把每个记录的索引放在数组[array indexOfObject:object]
中。每次要保存数组的顺序时,您都可以更新每个记录的排序列,例如
const char *sql = "UPDATE favs SET sort = ? WHERE id = ?";
if(sqlite3_prepare_v2(database, sql , -1, &updateStatment, NULL) != SQLITE_OK)
NSAssert1(0, @"Error while creating update statement. '%s'", sqlite3_errmsg(database));
sqlite3_bind_int(updateStatment, 1, [array indexOfObject:object]); sqlite3_bind_int(updateStatment, 2, [object id]);