【问题标题】:How to manually sort an order defined by the user如何手动对用户定义的订单进行排序
【发布时间】:2016-01-13 01:43:19
【问题描述】:

好的,我不想对我(程序员)在this situation 中定义的表进行排序。我想按照用户定义的顺序进行排序。以这种情况为例:

用户按此顺序添加到表中;第三,第一,第二和第四。所以表格看起来像这样:

1: third
2: first
3: second
4: fourth

现在用户不想按照插入表格的顺序查看该表格,也不想按照文本的字母顺序,而是按照最适合用户的顺序:

first
second
third
fourth

我应该如何做到这一点?我正在使用的是创建一个将 sqlite3.lib 文件导入项目的objective-c应用程序。因此我使用 sqlite3_open( .. ) 等方法。

如果信息量不够,请告诉我:)

【问题讨论】:

    标签: mysql objective-c sorting


    【解决方案1】:

    只需为用户添加的每个项目分配一个 ID。所以如果用户添加:

    1: third
    2: first
    3: second
    4: fourth
    

    为每个项目分配 ID:

    1: third  (id = 0)
    2: first  (id = 1)
    3: second (id = 2)
    4: fourth (id = 3)
    

    所以当用户想要重新排序列表时,让他们将每个项目拖放到他们想要的位置。当他们完成编辑后,只需像这样更新每个项目的 id 字段:

    2: first  (id = 0)
    3: second (id = 1)
    1: third  (id = 2)
    4: fourth (id = 3)
    

    因此,现在当您必须从数据库重新加载数据时,您只需对分配的 id 进行排序,它将始终按照用户期望的顺序排列。

    【讨论】:

    • 我喜欢这样,这会起作用,但是说我调用了 id 索引,bc id 已经用作 1:第三,id 为 1,我不需要增加/减少目标下方的所有行排?这可能会导致更改数千行的用户将最后一行移到最顶部
    • 您期待这么多用户输入吗?
    • 也许没有,但在进一步使用这种方法时是的
    • 如果使用这种方法变得便宜,那么我会使用它:)
    • 顺便说一句,我注意到你正在用 Objective-C 开发这个,你有什么理由不使用 Core Data 吗?使用 Core Data,您可以使用我描述的方法,并让它在您加载时将数据以排序数组的形式返回给您。我在我的一个应用程序中做到了这一点,并注意到了最轻微的延迟。只是一个想法,希望对您有所帮助。
    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多