我正在尝试使用 MFMailComposeViewController
类将 double 组附加到邮件。到目前为止,这是我在 ViewController
类中的代码:
func prepareMail(data:[Double]) {
// Compose the mail
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
mailComposer.setToRecipients(["mail@mail.com"])
mailComposer.setSubject("subject")
mailComposer.setMessageBody("Hello ", isHTML: false)
// Name data files (accelerometer + label)
let fileName = "file"
if let dataToAttach = data {
//Attach File
mailComposer.addAttachmentData(dataToAttach, mimeType: "text/plain", fileName: "\(fileName)")
self.present(mailComposer, animated: true, completion: nil)
}
}
}
此代码引发以下消息:
initializer for conditional binding must have Optional type, not [Double]
我的想法是:
- 选项 1:将 double 组转换为字符串并将其作为纯文本文件发送。然而,我的直觉告诉我这不是一个好的解决方案。我不喜欢解析。
- 选项 2: 以某种方式对数组进行编码,然后使用不同于纯文本/文本的另一种
mimetype
发送它。我在 IANA mime Types 中探索了一些选项,但我一点都不熟悉,不知道从哪里开始。
我不确定如何进行。
最佳答案
你的问题是这一行 if let dataToAttach = data
因为你的数据是 [Double]
而不能是 nil
,所以你不需要检查 of is nil
,或者您可以将参数类型更改为 [Double]?
以避免此编译错误。
替换这个:
if let dataToAttach = data {
//Attach File
mailComposer.addAttachmentData(dataToAttach, mimeType: "text/plain", fileName: "\(fileNames[i])")
self.present(mailComposer, animated: true, completion: nil)
}
通过这个:
func prepareMail(data:[Double]) {
// Compose the mail
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
mailComposer.setToRecipients(["mail@mail.com"])
mailComposer.setSubject("subject")
mailComposer.setMessageBody("Hello ", isHTML: false)
// Name data files (accelerometer + label)
let fileName = "file"
if let dataToAttach = data.map({String($0)}).joined(separator: "\n").data(using: .utf8)
{
mailComposer.addAttachmentData(dataToAttach, mimeType: "text/plain", fileName: "\(fileNames[i])")
self.present(mailComposer, animated: true, completion: nil)
}
}
就够了。
关于ios - 将 double 组附加到 Swift 中的邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45699444/