linkedin

Il arrive que l’on passe beaucoup trop de temps à chercher une question sur Google alors que l’on a le pouvoir d’y répondre soi-même. L’homme est devenu de plus en plus oublieux au fur et à mesure qu’il apprend à récupérer des informations sur le web. Vous pouvez lire à ce sujet ici, mais il y a de fortes chances que vous ne reteniez pas grand-chose. (Vous ne me croyez pas ? Où en sont vos tables de multiplication ? Nommez les planètes. Allez dans un nouvel endroit sans votre GPS… Oui, c’est bien ce que je pensais)

Le codage est une carrière qui souffre TRES souvent de ce phénomène. Si quelque chose n’est pas connu, nous cherchons à trouver de la documentation sur quelqu’un qui l’a fait en premier. MAIS parfois, nous disposons déjà de tous les outils nécessaires pour faire quelque chose.

J’ai quelques NSManagedObjects. Ils contiennent des données. J’ai besoin de les envoyer en JSON sur le web.

Cela semble si simple que je me suis dit “Il doit y avoir une méthode soit dans la documentation Apple, soit dans mon framework SBJSON”. Bien sûr, rien n’est apparu sur Google, alors je me suis dit : “Je suis vraiment stupide, il y a probablement un framework tiers qui est fait pour ça” Mais, hum, duh, non il n’y en a pas. Parce que c’est tellement simple et que je savais déjà comment faire.

Pour commencer, créez des catégories.

  1. Fichier -> Nouveau -> Nouveau fichier

  2. iOS -> CocoaTouch -> Catégorie Objective-C

  3. Category : nommer quelque chose d’utile comme “JSON_Dicts”

  4. Catégorie sur : La classe à laquelle nous avons affaire (le NSManagedObject que le générateur de code CoreData nous a donné). Observez : Vous avez maintenant une catégorie sur votre classe qui devrait être nommée ainsi : “[nom de la classe]+JSON_Dicts”.

  5. Déclarez ce qui suit dans le fichier .h de la nouvelle catégorie :

- (NSDictionary *)jsonDictionary;

  1. Implémentez ce truc. Pour cet exemple, j’utiliserai un NSManagedObject provenant d’un projet sur lequel je travaille et qui consiste à ajouter des entrées “Animal” dans une base de données :

`- (NSDictionary *)jsonDictionary { NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithCapacity:10] ; if (self.age) { [dictionary setObject:self.age forKey:@”age”] ; } else { [dictionnaire setObject:nil forKey:@”age”] ; }

if (self.gender) { [dictionnaire setObject:self.gender forKey:@”gender”] ; } else { [dictionnaire setObject:nil forKey:@”gender”] ; }

if (self.namestring) { [dictionnaire setObject:self.namestring forKey:@”namestring”] ; } else { [dictionnaire setObject:nil forKey:@”namestring”] ; }

if (self.numberofanimals) { [dictionnaire setObject:self.numberofanimals forKey:@”numberofanimals”] ; } else { [dictionary setObject:nil forKey:@”numberofanimals”] ; }

if (self.size) { [dictionnaire setObject:self.size forKey:@”sizeint”] ; } else { [dictionnaire setObject:nil forKey:@”sizeint”] ; }

if (self.species) { [dictionnaire setObject:self.species forKey:@”species”] ; } else { [dictionnaire setObject:nil forKey:@”species”] ; }

if (self.status) { [dictionnaire setObject:self.status forKey:@”status”] ; } else { [dictionnaire setObject:nil forKey:@”status”] ; }

return dictionary ; }`

Das it !

  1. Envoyez-le à votre encodeur JSON. J’utilise SBJSON pour que mon message ressemble à ceci :

NSString *jsonString = [animal.jsonDictionary JSONRepresenation];`

Le résultat ressemblera à ceci (par exemple) :

jsonRepresentation : {"age":2, "namestring" : "RMA", "gender":1, "numberofanimals":1, "sizeint":2, "status":0, "species" : "Cat"}

Quelqu’un a-t-il des suggestions d’amélioration ?

Besoin d'aide ?

Vous pensez qu'il est peut-être temps d'apporter une aide supplémentaire ?

Door3.com