Comment sérialiser une classe dans le sdk IOS (Objective-c)?
Comment sérialiser la classe suivante en objective-c, de sorte qu'il peut être utilisé avec SBJson?
- Je obtenir "la sérialisation JSON pas pris en charge pour les Animaux" erreur lorsque j'utilise ce code.
Quelqu'un peut-il point où je vais mal?
Le contenu de l'Animal.h fichier est comme ci-dessous
#import <UIKit/UIKit.h>
@interface Animal : NSObject<NSCoding> {
NSString *name;
NSString *description;
NSString *imageURL;
}
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *description;
@property (nonatomic, retain) NSString *imageURL;
-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u;
@end
Le contenu de l'Animal.m fichier est comme ci-dessous
#import "Animal.h"
@implementation Animal
@synthesize name, description, imageURL;
-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u {
self.name = n;
self.description = d;
self.imageURL = u;
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super initWithCoder:aDecoder])
{
name = [[aDecoder decodeObjectForKey:@"name"] retain];
description = [[aDecoder decodeObjectForKey:@"description"] retain];
imageURL = [[aDecoder decodeObjectForKey:@"imageURL"] retain];
}
return [self initWithName:name description:description url:imageURL];
}
- (void)encodeWithCoder:(NSCoder *)encoder
{
[super encodeWithCoder:encoder];
[encoder encodeObject:name forKey:@"name"];
[encoder encodeObject:description forKey:@"description"];
[encoder encodeObject:imageURL forKey:@"imageURL"];
}
@end
OriginalL'auteur Billy Samuel | 2012-01-19
Vous devez vous connecter pour publier un commentaire.
Faire de votre classe personnalisée conforme à
NSCoding
protocole puis sérialiser.Pour plus d'info, visitez le La documentation d'Apple
Aussi, ce lien sera également vous aider.
Comme il est suggéré dans ce lien, archive de votre classe personnalisée pour NSData et sérialiser ce qui est prévu dans la documentation d'Apple.
Modifier
Faites votre
Animal.m
comme suit:Le second lien est la clé. Vous utilisez
[NSKeyedArchiver archivedDataWithRootObject:(id)]
et[NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)]
à serialize et unserialize objets.OriginalL'auteur Ilanchezhian
À fait répondre à votre question sur la façon de faire à l'aide de SBJson: mettre en Œuvre le
proxyForJson
méthode. Sauf si vous êtes de la sérialisation d'unNSArray
ouNSDictionary
vous devez remplacer cette méthode pour la sérialisation de travail.Vous pouvez voir que c'est le cas en regardant la SBJson code source (en SBJsonWriter.m):
Mettre en œuvre
proxyForJson
dansAnimal.m
comme ça (pas testé):OriginalL'auteur aspartame
Ce projet open source JSONCoding rend l'ensemble du processus est assez simple, en utilisant le nouveau sdk de classe en collaboration avec le NSCoding protocole.
OriginalL'auteur Rob
Vérifier le nouvellement introduit NSJSONSerialization classe:
NSJSONSerialization classe
OriginalL'auteur jcm
Je pense que vous pouvez vérifier cela si elle vous aide à: Faire une Classe Sérialisable
je pense que nscoding est un protocole et nous devons mettre en œuvre dans <nscoding> de cette façon, mais si vous n'êtes pas l'obtention de mon point puis chekc ce raywenderlich.com/1914/... voici le but est différent de ce tutoriel, mais l'utilisation de nscoding vous pouvez apprendre à partir d'ici, je pense ..
J'ai mis à jour la question d'origine avec le code source avec les modifications suggérées dans les liens que vous avez partagé.
OriginalL'auteur Ballu
Veuillez cocher cette Liste des propriétés de Guide de Programmation - Sérialisation d'une Liste de propriétés
et de la poster ici:
Faire une Classe Sérialisable en Objective-c/iPhone?
Sérialisation d'un objet au format XML à l'aide de l'Obj-C /SDK de l'iPhone
Avez-vous fait de cette classe sont conformes à
NSCoding
protocole?Je suis nouveau à l'écriture de code pour l'IPhone app. Pouvez-vous regarder le code source de mon original question et où je vais mal?
OriginalL'auteur Meet
Voir aussi https://github.com/jsonmodel/jsonmodel
C'est aussi l'élu de la bibliothèque de l'Objective-c Swagger client.
OriginalL'auteur Alex Nolasco