Serialisieren einer Klasse in IOS-sdk (Objective-c)?
Wie die Serialisierung der folgenden Klasse in objective-c, so dass es kann verwendet werden, mit SBJson?
Bekomme ich "JSON serialisieren nicht unterstützt für Tier" - Fehler, wenn ich diesen code verwenden.
Kann mir jemand zeigen, wo ich falsch?
Den Inhalt Tier.h-Datei ist wie folgt
#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
Den Inhalt Tier.m-Datei ist als unten
#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
InformationsquelleAutor Billy Samuel | 2012-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen Sie Ihre benutzerdefinierte Klasse entsprechen
NSCoding
Protokoll und dann zu serialisieren.Für weitere Informationen, besuchen Sie die Apple-Dokumentation
Auch diese link wird auch Ihnen helfen.
Wie vorgeschlagen, in diesem link, archivieren Sie Ihre benutzerdefinierte Klasse NSData und serialisieren Sie, dass wie in der Apple-Dokumentation.
Bearbeiten
Machen Sie Ihre
Animal.m
wie folgt:Der zweite link ist der Schlüssel. Verwenden Sie
[NSKeyedArchiver archivedDataWithRootObject:(id)]
und[NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)]
zu serialize und unserialize Objekte.InformationsquelleAutor Ilanchezhian
Tatsächlich Ihre Frage zu beantworten, wie es zu tun mit SBJson: Umsetzung der
proxyForJson
Methode. Es sei denn, Sie werden serialisieren einNSArray
oderNSDictionary
müssen Sie diese Methode überschreiben, für die Serialisierung zu arbeiten.Können Sie sehen, dass dies der Fall ist, indem man die SBJson source-code (in SBJsonWriter.m):
Implementieren
proxyForJson
imAnimal.m
wie folgt aus (nicht getestet):InformationsquelleAutor aspartame
Dieser open-source-Projekt JSONCoding macht den gesamten Prozess ziemlich einfach, mit dem neuen sdk-Klasse in Verbindung mit dem NSCoding Protokoll.
InformationsquelleAutor Rob
Überprüfen Sie die neu eingeführten NSJSONSerialization Klasse:
NSJSONSerialization Klasse
InformationsquelleAutor jcm
Ich denke, Sie können check out diese, wenn es Ihnen hilft: Machen Sie eine Benutzerdefinierte Klasse Serializable
ich denke, nscoding ist ein Protokoll, und wir sollten zu implementieren, die in <nscoding> dieser Weg aber dennoch, wenn Sie nicht immer meine zeigen, dann chekc das raywenderlich.com/1914/... hier ist der Zweck unterscheidet sich von dem tutorial aber die Verwendung von nscoding, die man lernen kann hier, denke ich ..
Ich habe aktualisiert die ursprüngliche Frage mit dem Quellcode zusammen mit den vorgeschlagenen änderungen in den links, die Sie geteilt haben.
InformationsquelleAutor Ballu
Bitte überprüfen Sie diese Property List Programming Guide - Serialisieren einer Liste Eigenschaft
und der ähnlichen Beitrag hier:
Machen Sie eine Benutzerdefinierte Klasse Serialisierbar in Objective-c/iPhone?
Objekt-Serialisierung im XML-format unter Verwendung von Obj-C /iPhone SDK
Sie machte das Klasse entsprechen
NSCoding
Protokoll?Ich bin neu zu schreiben code für die IPhone app. Kann man sich den source-code in meine ursprüngliche Frage und darauf hinweisen, wohin ich gehe falsch gemacht?
InformationsquelleAutor Meet
Siehe auch https://github.com/jsonmodel/jsonmodel
Dies ist auch die gewählte Bibliothek für Objective-c Fors-client.
InformationsquelleAutor Alex Nolasco