在Swift中发送一封以循环为正文的电子邮件



我想根据用户在图像上编辑的内容,发送一封具有不同步骤和值的电子邮件。为此,我使用UserDefaults来保存值。

然后我将下一个代码放入UIAlertController:

alert.addAction(UIAlertAction(title: "Send", style: .default)
{ action -> Void in
//i is the last step register
let nombre = alert.textFields![0]
for n in 1...self.i {
print("Step (n): (self.filterUserDefaults.string(forKey: "Step_(n)")!)")
}
let filters = [
"Brillo",
"Exposicion",
"Contraste",
"Saturacion",
"Saturacion_color",
"Temperatura",
"Blanco_Negro",
"HUE",
"Tintado_Rojo",
"Tintado_Rosa",
"Tintado_Naranja",
"Tintado_Amarillo",
"Tintado_Purpura",
"Tintado_Verde",
"Tintado_Azul",
"Tintado_Marron",
"Tintado_Gris"]
for filter in filters {
print("(filter) = (self.filterUserDefaults.float(forKey: filter).roundTo(places: 3))")
}
self.sendMail(filtro: nombre.text!, body: "XXXX")
})
present(alert, animated: true)
}
func sendMail(filtro: String, body: String) {
if MFMailComposeViewController.canSendMail() {
let mail = MFMailComposeViewController()
mail.mailComposeDelegate = self
mail.setToRecipients(["blablabla@gmail.com"])
mail.setSubject("Filtro (filtro)")
mail.setMessageBody(body, isHTML: true)
present(mail, animated: true)
} else {
print("Error presenting email app.")
}
}

所以打印正如我所期望的那样工作,但问题是将这些打印放入sendMail函数的主体中。。。

我试过了:

var steps: [String]?
for n in 1...self.i {
steps = ["Step (n): (self.filterUserDefaults.string(forKey: "Step_(n)")!)"]
}
.
.
.
self.sendMail(filtro: nombre.text!, body: steps!.joined(separator: "n"))

但只有最后一步被写入主体的电子邮件,而不是数组。。。

有人能帮我吗?

提前谢谢!

u可以尝试以下代码

var steps: String = ""
for n in 1...self.i {
steps += "Step (n): (self.filterUserDefaults.string(forKey: "Step_(n)")!)"
}

您差不多完成了,您需要初始化您的数组变量并使用append

var steps = [String]()
for n in 1...self.i {
steps.append("Step (n): (self.filterUserDefaults.string(forKey: "Step_(n)")!)")
}
...
self.sendMail(filtro: nombre.text!, body: steps.joined(separator: "n"))

最新更新