Convertir n'importe quel Type de Données en NSData et de retour à nouveau

Je suis en train de travailler sur une application où vous pouvez envoyer un texte, une image ou un contact sur Multipeer Connectivity à un autre appareil. Il va ensuite enregistrer dans le deuxième dispositif de Base de Données.

Ce que je fais, c'est envoyer les données sur un NSDictionary et de convertir de nouveau. Donc, je suis parti avec un NSDictionary sur l'appareil de réception. Comment, alors, puis-je économiser de l'objet pour la clé de @"données" de Base de Données?

J'aimerais qu'il fonctionne avec NSString, UIImage & ABPerson.

    //Create a new object in the managed object context.
    Received *receivedData = [NSEntityDescription insertNewObjectForEntityForName:@"Received" inManagedObjectContext:self.managedObjectContext];
    //Assign the properties based on what was input in the textfields.

    //Check what type it is
    NSString *dataType = [dictionary objectForKey:@"type"];
    receivedData.type =  dataType;

    //Determine what type of data was passed over...

    if ([dataType isEqualToString:@"Photo"])
    {
        receivedData.object = UIImageJPEGRepresentation([dictionary 
                                                         objectForKey:@"object"], 0.5f);

        NSLog(@"A photo saved in core data");
    }
    else  
    { 

      //receivedData.object = [NSKeyedArchiver archivedDataWithRootObject:[dictionary objectForKey:@"object"]];
      receivedData.object = [[dictionary objectForKey:@"object"] dataUsingEncoding:NSUTF8StringEncoding];

    }

    //Save the managed object context.
    NSError *error = nil;
    [self.managedObjectContext save:&error];

Je n'ai pas particulièrement envie de faire l'if, else if, afin de déterminer comment convertir une base de données qu'il serait alors être répétée lorsque j'affiche les données. La houe d'autre puis-je le faire? Je suis actuellement en train d'avoir des erreurs avec la NSKeyedArchiver type dont je ne suis pas sûr pourquoi, et par conséquent, il est commenté.

Toute aide serait grandement appréciée!

OriginalL'auteur falky | 2013-11-08