在Swift中将一组双打附加到邮件中

时间:2017-08-15 18:44:54

标签: ios arrays swift mfmailcomposeviewcontroller

我正在尝试使用MFMailComposeViewController类将一组双打附加到邮件中。到目前为止,这是我在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)
        }
    }
}

此代码提出以下消息:

  

条件绑定的初始化程序必须具有Optional类型,而不是   [双]

所以这是我的想法:

  • 选项1:将双精度数组转换为字符串并将其作为普通/文本文件发送。然而,我的直觉告诉我,这不是一个好的解决方案。我不是解析的粉丝。
  • 选项2:以某种方式对数组进行编码,并使用普通/文本以外的其他mimetype发送它。我在IANA mime Types中探讨了一些选项,但我对此并不熟悉,也不知道从哪里开始。

我不知道该怎么办。

1 个答案:

答案 0 :(得分:1)

您的问题就在这一行[{1}},因为您的数据为if let dataToAttach = data且不能为[Double],因此您无需检查nil,或者您可以将参数类型更改为nil以避免此编译器错误。

取而代之:

[Double]?

由此:

if let dataToAttach = data {
            //Attach File
            mailComposer.addAttachmentData(dataToAttach, mimeType: "text/plain", fileName: "\(fileNames[i])")
            self.present(mailComposer, animated: true, completion: nil)
        }

就够了。