我试图实现一些代码,将自动重命名用户输入的名称,如果他们输入的名称已经提交。在某种程度上,我让它工作,但是问题是,如果循环迭代不止一次,那么您最终会将名称重命名为类似这样的“衣服(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
}
}