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
Vous devez vous connecter pour publier un commentaire.
Essayez ce lien pour comprendre la façon dont son travail
Vous pouvez obtenir NSData pour tout objet conforme à la
NSCoding
(ouNSSecureCoding
) protocole:cette ligne crée un objet à partir de
NSData
UIImage
etNSString
conforme àNSCoding
, mais pourABPerson
vous aurez besoin d'utiliser lavCardRepresentation
qui renvoieNSData
.Désolé. Il a travaillé pour le texte et les images, mais pas pour les contacts. Lorsqu'un utilisateur sélectionne un contact, je reçois un ABRecordRef. Comment pourrait-on passer d'un contact plus?? Cheers
pour ABPerson vérifier ce document lists.apple.com/archives/cocoa-dev/2004/May/msg00432.html
OriginalL'auteur Jignesh Chanchiya