如何序列化Objective-C中的以下類,以便它可以與SBJson一起使用?如何在IOS sdk(Objective-c)中序列化一個類?
當我使用此代碼時,出現「Animal不支持JSON序列化」錯誤。
有人可以指出我要去哪裏嗎?
Animal.h文件的內容是如下
#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
Animal.m文件的內容是如下
#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
我已經更新了我的答案。檢查.. – Ilanchezhian
第二個環節是關鍵。你使用'[NSKeyedArchiver archivedDataWithRootObject:(id)]'和'[NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)]'來序列化和反序列化對象。 – respectTheCode