如何通过电子邮件发送 NSManagedObject

Posted

技术标签:

【中文标题】如何通过电子邮件发送 NSManagedObject【英文标题】:How to Email NSManagedObject 【发布时间】:2016-12-20 16:43:45 【问题描述】:

我想从我的 iPhone 应用程序中获取数据,并允许用户通过电子邮件将其发送给该应用程序的其他用户。我将应用程序数据存储为 CoreData 中的 NSManagedObjects 数组。获取这些存储的数据并将其转换为可以通过电子邮件发送并由我的应用程序导入的文件的最佳方法是什么?这是数据的 NSManagedObject 子类:

import Foundation
import CoreData

class People: NSManagedObject 

    @NSManaged var days: AnyObject
    @NSManaged var dayZero: Date
    @NSManaged var firstName: String
    @NSManaged var gender: String
    @NSManaged var lastName: String


获取此存储数据并将其转换为可以通过电子邮件发送并由我的应用导入的文件的最佳方法是什么?

【问题讨论】:

【参考方案1】:

您的问题非常广泛,因此这只是一个高级别的答案。

要通过电子邮件发送数据,您需要将数据作为附件添加到电子邮件中。而且由于您希望此附件可用于您的应用(并且可能仅适用于您的应用),因此您需要定义自己的自定义文件扩展名、UTI 和 mime 类型。

您需要将托管对象转换为可附加到电子邮件的Data。有很多可能的方法可以做到这一点。最简单的就是使用NSKeyedArchiver

从托管对象获得数据后,请使用MFMailComposeViewController。使用您的自定义扩展名将数据添加为附件和正确的文件名。

您需要配置您的应用程序以处理您的自定义文件类型,以便当用户在其 ios 设备上的邮件应用程序中选择附件并安装您的应用程序时,您的应用程序是打开邮件附件的一个选项。

实现正确的UIApplicationDelegate 方法来处理传递的电子邮件附件。从 URL 中,将其加载到 Data 对象中并使用 NSKeyedUnarchiver 检索原始数据。

这个谜题有很多单独的部分。在此处或通过 Google 的其他问题和答案中对每个问题都有更详细的介绍。

【讨论】:

只是补充一点,我不会使用NSKeyedArchiver 来完成这个任务,因为NSManagedObjectNSManagedObjectContext 的实例相关联。最好将其“导出”为 JSON 或其他格式,然后接收者可以将其“导入”到其上下文中。 谢谢两位,这个过程的解释很有帮助!

以上是关于如何通过电子邮件发送 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Celery 发送 HTML 电子邮件?它不断发送文本/纯文本

如何通过组帐户使用 Google Script 发送电子邮件

如何使用 Ruby 的邮件 gem 通过 smtp 发送电子邮件?

如何通过 HTML 和 JavaScript 发送电子邮件?

如何删除 PHPMailer 发送的电子邮件中的“通过”

如何通过 MailChimp 3.0 api 发送电子邮件?