Konwertuj dowolny typ danych na NSData iz powrotem

Pracuję nad aplikacją, w której możesz wysłać tekst, obraz lub kontakt przez Multipeer Connectivity do innego urządzenia. Następnie zostanie zapisany w danych podstawowych drugiego urządzenia.

Co robię, to przesyłam dane jako NSDictionary i konwertuję je ponownie. Zostałem więc z NSDictionary na urządzeniu odbiorczym. Jak zatem mogę zapisać obiekt dla klucza @ "objectData" do danych podstawowych?

Chciałbym, żeby działał z NSString, UIImage i 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];

Nie chcę szczególnie wykonywać instrukcji if, else if, aby określić, jak konwertować dane podstawowe, ponieważ byłoby to następnie powtarzane, gdy wyświetlam dane. Hoe, czy mogę to zrobić? Obecnie otrzymuję błędy z typem NSKeyedArchiver, którego nie jestem pewien dlaczego i dlatego jest on komentowany.

Każda pomoc byłaby bardzo mile widziana!

questionAnswers(1)

yourAnswerToTheQuestion