Konvertieren Sie einen beliebigen Datentyp in NSData und wieder zurück

Ich arbeite an einer App, in der Sie entweder einen Text, ein Bild oder einen Kontakt über Multipeer Connectivity an ein anderes Gerät senden können. Anschließend werden die Core-Daten des zweiten Geräts gespeichert.

Ich sende die Daten als NSDictionary und konvertiere sie wieder zurück. Ich habe also ein NSDictionary auf dem empfangenden Gerät. Wie kann ich dann das Objekt für den Schlüssel von @ "objectData" in Core Data speichern?

Ich möchte, dass es mit NSString, UIImage & ABPerson zusammenarbeitet.

    // 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];

Ich möchte nicht besonders die if-, sonst if-Anweisungen ausführen, um zu bestimmen, wie die Kerndaten konvertiert werden sollen, da sie dann wiederholt würden, wenn ich die Daten anzeige. Wie sonst kann ich das machen? Ich erhalte derzeit Fehler mit dem NSKeyedArchiver-Typ. Ich bin mir nicht sicher, warum und daher ist er auskommentiert.

Jede Hilfe wäre sehr dankbar!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage