我正在尝试实现一些代码,如果用户输入的名称已经提交,它将自动重命名用户输入的名称。我在某种程度上工作,但问题是如果循环迭代不止一次,那么你最终将名称重命名为这样的东西'衣服(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而不用括号中的多个值结束?
答案 0 :(得分:1)
这是因为您正在使用可能已被循环的先前迭代修改的transactionName
。您应该使用原始transactionName
代替:
let originalName = transactionName;
while arrayObject.paymentsArray().containsObject(transactionName) {
transactionName = "\(originalName) (\(index))"
index = index + 1
}
}