Convertir cualquier tipo de datos en NSData y viceversa

Estoy trabajando en una aplicación donde puedes enviar un mensaje de texto, una imagen o un contacto a través de Multipeer Connectivity a otro dispositivo. Luego se guardará en los Datos Core del segundo dispositivo.

Lo que hago es enviar los datos como un NSDictionary y volver a convertirlos. Así que me quedo con un NSDictionary en el dispositivo receptor. Entonces, ¿cómo puedo guardar el objeto para la clave de @ "objectData" en Core Data?

Me gustaría trabajar con NSString, UIImage y 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];

En particular, no quiero hacer el if, sino las sentencias if para determinar cómo convertir sus datos centrales como se repetirían cuando muestre los datos. Hoe otra cosa puedo hacerlo? Actualmente estoy recibiendo errores con el tipo NSKeyedArchiver, que no estoy seguro de por qué y por lo tanto está comentado.

Cualquier ayuda sería muy apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta