我试图实现一些代码,将自动重命名用户输入的名称,如果他们输入的名称已经提交。在某种程度上,我让它工作,但是问题是,如果循环迭代不止一次,那么您最终会将名称重命名为类似这样的“衣服(1)(2)(3)”
这是我目前掌握的密码:

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()
    }

第一个else if是代码的相关部分。
如何重命名transactionName而不在方括号中包含多个值?

最佳答案

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

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

08-16 01:40