将双精度数组附加到 Swift 中的邮件
Attach an array of doubles to a mail in Swift
我正在尝试使用 MFMailComposeViewController
class 将双精度数组附加到邮件中。到目前为止,这是我在 ViewController
class:
中的代码
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: 将双精度数组转换为字符串并将其作为 plain/text 文件发送。然而,我的直觉告诉我这不是一个好的解决方案。我不喜欢解析。
- 选项 2: 以某种方式对数组进行编码,然后使用 plain/text 以外的另一个
mimetype
发送它。我在IANA mime Types中探索了一些选项,但我一点都不熟悉,不知道从哪里开始。
我不确定如何进行。
你的问题是这一行 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)
}
通过这个:
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([=11=])}).joined(separator: "\n").data(using: .utf8)
{
mailComposer.addAttachmentData(dataToAttach, mimeType: "text/plain", fileName: "\(fileNames[i])")
self.present(mailComposer, animated: true, completion: nil)
}
}
就够了。
我正在尝试使用 MFMailComposeViewController
class 将双精度数组附加到邮件中。到目前为止,这是我在 ViewController
class:
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: 将双精度数组转换为字符串并将其作为 plain/text 文件发送。然而,我的直觉告诉我这不是一个好的解决方案。我不喜欢解析。
- 选项 2: 以某种方式对数组进行编码,然后使用 plain/text 以外的另一个
mimetype
发送它。我在IANA mime Types中探索了一些选项,但我一点都不熟悉,不知道从哪里开始。
我不确定如何进行。
你的问题是这一行 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)
}
通过这个:
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([=11=])}).joined(separator: "\n").data(using: .utf8)
{
mailComposer.addAttachmentData(dataToAttach, mimeType: "text/plain", fileName: "\(fileNames[i])")
self.present(mailComposer, animated: true, completion: nil)
}
}
就够了。