首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中发送带有循环正文的电子邮件

在Swift中发送带有循环正文的电子邮件
EN

Stack Overflow用户
提问于 2020-05-01 00:02:14
回答 2查看 46关注 0票数 1

我想发送一封电子邮件与不同的步骤和值取决于用户已编辑的图像。为此,我使用UserDefaults来保存值。

然后,我将下一段代码转换为UIAlertController:

代码语言:javascript
复制
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函数的主体中……

我试过了:

代码语言:javascript
复制
            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"))

但只有最后一步会写入正文的电子邮件中,而不是数组中...

有谁能帮帮我吗?

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-01 00:49:27

现在就差不多了,需要初始化数组变量并使用append

代码语言:javascript
复制
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"))
票数 0
EN

Stack Overflow用户

发布于 2020-05-01 00:12:18

你可以试试下面的代码

代码语言:javascript
复制
var steps: String = ""
for n in 1...self.i {
steps += "Step \(n): \(self.filterUserDefaults.string(forKey: "Step_\(n)")!)"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61527717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档