ios - 将 double 组附加到 Swift 中的邮件

标签 ios arrays swift mfmailcomposeviewcontroller

我正在尝试使用 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/

相关文章:

javascript - 关联数组上的删除与拼接

php - 删除数组中重复一个值的元素

ios - 制作二进制计算器应用程序 (swift)

ios - UITableViewCell didSelectRowAtIndexPath 在响应选择时非常慢

ios - 将 UIPickerView 视为组合/选择框

objective-c - 按距离排序

php - 使用PHP将数组插入数据库

iOS Todays 小部件扩展 - 动画 UISlider

ios - 从 Firebase child 获取数据到 Xcode 8 swift 3 ios 10+ 中的标签

ios - MKMapView 叠加矢量瓦片