2016-12-20 1 views
0

Je souhaite importer des données de mon application iPhone et autoriser les utilisateurs à les envoyer par e-mail à d'autres utilisateurs de l'application. J'ai les données de l'application stockées sous la forme d'un tableau de NSManagedObjects dans CoreData. Quel est le meilleur moyen de prendre ces données stockées et de les convertir en un fichier pouvant être envoyé par e-mail et importé par mon application? C'est le NSManagedObject sous-catégorie pour les données:Comment envoyer un e-mail 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 

} 

Quelle est la meilleure façon de prendre ces données stockées et le convertir en un fichier qui peut être envoyé par courriel et importé par mon application?

Répondre

0

Votre question est très large, donc ce ne sera qu'une réponse de haut niveau.

Pour envoyer les données par e-mail, vous devez ajouter vos données en pièce jointe à l'e-mail. Et puisque vous voulez que cette pièce jointe soit utilisable avec votre application (et peut-être seulement votre application), vous devez définir votre propre extension de fichier personnalisée, UTI et type MIME.

Vous devrez convertir votre objet géré en Data pouvant être joint à l'e-mail. Il existe plusieurs façons de le faire. Le plus simple est d'utiliser NSKeyedArchiver.

Une fois que vous avez les données de l'objet géré, utilisez MFMailComposeViewController. Ajoutez les données en pièce jointe et un nom de fichier approprié en utilisant votre extension personnalisée.

Vous devez configurer votre application pour gérer votre type de fichier personnalisé. Ainsi, lorsqu'un utilisateur sélectionne la pièce jointe dans l'application Courrier sur son appareil iOS et que votre application est installée, votre application est une option pour ouvrir la pièce jointe.

Implémentez la méthode UIApplicationDelegate appropriée pour gérer la transmission de la pièce jointe. À partir de l'URL, chargez-le dans un objet Data et utilisez NSKeyedUnarchiver pour récupérer les données d'origine.

Il y a beaucoup de pièces individuelles à ce puzzle. Chacun a été couvert plus en détail dans d'autres questions et réponses ici ou via Google.

+0

Juste pour ajouter à cela, je n'utiliserais pas NSKeyedArchiver pour cette tâche car NSManagedObject est lié à une instance de NSManagedObjectContext. Il est préférable de "l'exporter" vers JSON ou un autre format, puis le récepteur peut "l'importer" dans son contexte. –

+0

Merci à tous les deux, l'explication de ce processus a été très utile! – user1947112