0

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

有人可以为此提出逻辑吗?任何帮助表示赞赏?在此先感谢光辉

4

2 回答 2

0

这是我用来在应用程序中执行类似操作的逻辑:

  1. 声明一个NSString被调用prefix和一个NSInteger被调用number
  2. 检查您的姓名末尾是否有数字:
    • 如果是,则设置number为该数字的值和prefix不带数字的名称。
    • 如果不是,则设置number为 1 和prefix名称。
  3. 从 1 循环到某个最大数,执行以下操作:
    1. proposedName从基数和数 构造一个:
      • 如果number为 1,则使用裸prefix.
      • 否则,以您要生成的格式连接prefixand 。number
    2. 检查是否proposedName已在使用中。*
      • 如果它正在使用中,则递增number并再次循环。
      • 如果它没有被使用,proposedName是你的新名字。

鉴于您使用的是 SQLite 数据库,您可以通过预取以您的前缀开头的名称并将它们加载到NSMutableSet. 这比对每个单独的名称执行查询要快。

* 当你做这个测试时,你可能应该排除你已经在看的对象。这将允许您尝试“唯一化”现有对象的名称,而无需实际更改它。

于 2013-05-14T23:06:46.933 回答
0

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

于 2013-05-14T12:10:04.333 回答