美文网首页
NSSecureCoding协议demo

NSSecureCoding协议demo

作者: ONE2 | 来源:发表于2017-01-20 15:28 被阅读98次

    1.自定义一个User类,实现NSSecureCoding协议

    @interface User : NSObject <NSSecureCoding>
    
    @property(nonatomic, strong)NSString *user;
    @property(nonatomic, strong)NSArray *books;
    @property(nonatomic, assign)int age;
    
    @end
    @implementation User
    
    +(instancetype)model{
        User *user = [[User alloc] init];
        user.user = @"user";
        user.books = @[@"精通Objective-C设计模式",@"图解HTTP",@"解忧杂货店"];
        user.age = 24;
        return user;
    }
    
    + (BOOL)supportsSecureCoding{
        return YES;
    }
    
    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder;{
        self = [super init];
        if (self) {
            self.user = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"user"];
            self.books = [aDecoder decodeObjectOfClass:[NSArray class] forKey:@"books"];
            self.age = [aDecoder decodeIntForKey:@"age"];
        }
        return self;
    }
    
    - (void)encodeWithCoder:(NSCoder *)aCoder{
        [aCoder encodeObject:_user forKey:@"user"];
        [aCoder encodeObject:_books forKey:@"books"];
        [aCoder encodeInt:_age forKey:@"age"];
    }
    

    2.Archive

    User *user = [User model];
    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archive = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    archive.requiresSecureCoding = YES;
    [archive encodeObject:user forKey:NSKeyedArchiveRootObjectKey];
    [archive finishEncoding]; //encode完之后,必须调用此方法
    [data writeToFile:[self filePath] atomically:YES];
    

    3.Unarchive

    NSData *data = [[NSData alloc] initWithContentsOfFile:[self filePath]];
    NSKeyedUnarchiver *unarchive = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    unarchive.requiresSecureCoding = YES;
    User *user = [unarchive decodeObjectOfClass:[User class] forKey:NSKeyedArchiveRootObjectKey];
    [unarchive finishDecoding]; //可调用或者可不调用?
    

    相关文章

      网友评论

          本文标题:NSSecureCoding协议demo

          本文链接:https://www.haomeiwen.com/subject/ghowbttx.html