像“Windows文件夹结构”行为一样每次生成唯一的名称

时间:2013-05-14 12:00:32

标签: objective-c

我想像windows一样创建文件夹结构逻辑。我正在使用SQlite数据库。我想每次都生成一个独特的名字。对于例如如果用户输入名称为“新”的文本。如果他再次输入相同名称“New”,那么它应该是New(1)。如果再次输入相同名称“New”则应该是“New(2)”。如果用户删除“New(1)”条目并输入“New”,则“New(1)”应放在“New”和“New(2)”之间。

有人能为此建议逻辑吗?任何帮助表示赞赏? 提前致谢 特加斯

2 个答案:

答案 0 :(得分:0)

我认为你将拥有一个id和foldername作为字段的数据库。您只需要从数据库中检索所有记录。在查询中使用like运算符。获得列表后,进入循环并通过比较数字添加新条目。试试这个。

答案 1 :(得分:0)

这是我用来在app中做类似事情的逻辑:

  1. 声明名为NSString的{​​{1}}和名为prefix的{​​{1}}。
  2. 检查您的名字是否在其末尾有一个数字:
    • 如果是,请将NSInteger设置为该数字的值,将number设置为不带数字的名称。
    • 如果没有,请将number设置为1并将prefix设置为名称。
  3. 从1到最大数字循环,执行以下操作:
    1. 从基数和数字构建number
      • 如果prefix为1,请使用裸proposedName
      • 否则,请以您要生成的格式连接numberprefix
    2. 检查prefix是否已被使用。*
      • 如果正在使用,请递增number并再次循环。
      • 如果未使用,proposedName是您的新名称。
  4. 鉴于您正在使用SQLite数据库,您可以通过预先获取以您的前缀开头的名称并将其加载到number来加快速度。这比为每个名称执行查询要快。

    *当您进行此测试时,您应该排除您正在查看的对象。这将允许您尝试“统一”现有对象的名称而不实际更改它。