永发信息网

如何序列化包含NSData的对象呢?

答案:2  悬赏:20  手机版
解决时间 2021-03-21 19:32
  • 提问者网友:练爱
  • 2021-03-21 02:27
如何序列化包含NSData的对象呢?
最佳答案
  • 五星知识达人网友:北城痞子
  • 2021-03-21 03:55
@interface Donkey : NSObject{ NSString* s; NSData* d;}@property (nonatomic, retain) NSString* s;@property (nonatomic, retain) NSData* d;- (NSData*) serialize;@end@implementation Donkey@synthesize s, d;static NSString* const KEY_S = @"string";static NSString* const KEY_D = @"data";- (void) encodeWithCoder:(NSCoder*)coder{ [coder encodeObject:self.s forKey:KEY_S]; [coder encodeObject:self.d forKey:KEY_D];}- (id) initWithCoder:(NSCoder*)coder;{ if(self = [super init]) { self.s = [coder decodeObjectForKey:KEY_S]; self.d = [coder decodeObjectForKey:KEY_D]; } return self;}- (NSData*) serialize{ return [NSKeyedArchiver archivedDataWithRootObject:self];}@end
全部回答
  • 1楼网友:像个废品
  • 2021-03-21 04:08
nt main (int argc, const char * argv[]) {05 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 06 07 Sample *s1 = [[Sample alloc] initWithName:@"thing1" magicNumber:42 shoeSize:10.5]; 08 [s1.subThingies addObject:@"1"];09 [s1.subThingies addObject:@"2"];10 NSLog(@"%@",s1); 11 NSData *data1 = [NSKeyedArchiver archivedDataWithRootObject:s1];//将s1序列化后,保存到NSData中12 [s1 release];13 [data1 writeToFile:@"/tmp/data.txt" atomically:YES];//持久化保存成物理文件14 15 NSData *data2 = [NSData dataWithContentsOfFile:@"/tmp/data.txt"];//读取文件16 Sample *s2 = [NSKeyedUnarchiver unarchiveObjectWithData:data2];//反序列化 17 NSLog(@"%@",s2);18 19 [pool drain];20 return 0;21 }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯