自定义归档类-实现NSCoding协议

#import <Foundation/Foundation.h>


@interface TestNScoding : NSObject<NSCoding>


@property (nonatomic, copy)  NSString *name;

@property (nonatomic, assign)  int nameid;

@end

#define NAME @"name"

#define NAME_ID @"nameid"

#import "TestNScoding.h"



@implementation TestNScoding

//自定义归档必须实现下面两个类

//归档时调用

- (void)encodeWithCoder:(NSCoder *)aCoder{

     [aCoder encodeObject:self.name forKey:NAME];

    [aCoder encodeInt:self.nameid forKey:NAME_ID];


}

//归档时调用

- (id)initWithCoder:(NSCoder *)aDecoder{

    

    self = [super init];

    if (self) {

        self.name = [aDecoder decodeObjectForKey:NAME];

        self.nameid = [aDecoder decodeIntForKey:NAME_ID];

    }

    return self;

}


@end

  //新建归档文件

    NSString *filePath= [self dataPath:@"user.archiver"];

    TestNScoding *mTestNScoding = [[TestNScoding alloc] init];

    mTestNScoding.name = @"hexinnian";

    mTestNScoding.nameid = 150;

    //开始归挡归档

    BOOL Succesed= [NSKeyedArchiver archiveRootObject:mTestNScoding toFile:filePath];

    

    //解归挡

    TestNScoding *TestNScoding2 = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];

    NSLog(@"={%@}=={%d}==",TestNScoding2.name,TestNScoding2.nameid);

你可能感兴趣的:(自定义归档类-实现NSCoding协议)