while循环用于重命名重复名称

时间:2014-08-21 01:16:50

标签: swift

我正在尝试实现一些代码,如果用户输入的名称已经提交,它将自动重命名用户输入的名称。我在某种程度上工作,但问题是如果循环迭代不止一次,那么你最终将名称重命名为这样的东西'衣服(1)(2)(3)& #39;

以下是我目前的代码:

if nameLength == 0 {
        fade()
        entryWarningLabel.text = "Please enter a transaction name."
    } else if arrayObject.paymentsArray().containsObject(transactionName) == true {
        if autoAdjust == true {
            var index = 1
            while arrayObject.paymentsArray().containsObject(transactionName) == true {
                transactionName = "\(transactionName) (\(index))"
                index = index + 1
            }
            popToVC()
            enterButtonCode()
        } else {
            fade()
            entryWarningLabel.text = "You already have a transaction named '\(transactionName)'."
        }
    } else if nameLength > 0 {
        popToVC()
        enterButtonCode()
    }

第一个if是代码的相关部分。

如何重命名transactionName而不用括号中的多个值结束?

1 个答案:

答案 0 :(得分:1)

这是因为您正在使用可能已被循环的先前迭代修改的transactionName。您应该使用原始transactionName代替:

let originalName = transactionName;
while arrayObject.paymentsArray().containsObject(transactionName) {
    transactionName = "\(originalName) (\(index))"
        index = index + 1
    }
}