归档

来源:互联网 发布:石家庄关键词优化 编辑:程序博客网 时间:2024/04/28 18:08

*************

常用归档接档方法  都是一一对应的

 

归档 

@interface NSKeyedArchiver NSCoder 

 

(NSData *)archivedDataWithRootObject:(id)rootObject;

归档单个对象

(BOOL)archiveRootObject:(id)rootObject toFile:(NSString *)path;

归档单个文档到对象

(id)initForWritingWithMutableData:(NSMutableData *)data;

初始化归档对象  以后encode的都放到data中

 

(void)encodeObject:(id)objv forKey:(NSString *)key;

(void)encodeConditionalObject:(id)objv forKey:(NSString *)key;

(void)encodeBool:(BOOL)boolv forKey:(NSString *)key;

(void)encodeInt:(int)intv forKey:(NSString *)key;// native int

(void)encodeInt32:(int32_t)intv forKey:(NSString *)key;

(void)encodeInt64:(int64_t)intv forKey:(NSString *)key;

(void)encodeFloat:(float)realv forKey:(NSString *)key;

(void)encodeDouble:(double)realv forKey:(NSString *)key;

(void)encodeBytes:(const uint8_t *)bytesp length:(NSUInteger)lenv forKey:(NSString *)key;

各种归档对象

 

(void)finishEncoding;

结束归档  归档最后是必须要写的

 

 

解档  和归档的方法都是一一对应的

@interface NSKeyedUnarchiver NSCoder 

(id)unarchiveObjectWithData:(NSData *)data;

 

(id)unarchiveObjectWithFile:(NSString *)path;

 

(id)initForReadingWithData:(NSData *)data;

 

(id)decodeObjectForKey:(NSString *)key;

(BOOL)decodeBoolForKey:(NSString *)key;

(int)decodeIntForKey:(NSString *)key;// may raise range exception

(int32_t)decodeInt32ForKey:(NSString *)key;

(int64_t)decodeInt64ForKey:(NSString *)key;

(float)decodeFloatForKey:(NSString *)key;

(double)decodeDoubleForKey:(NSString *)key;

(const uint8_t *)decodeBytesForKey:(NSString *)key returnedLength:(NSUInteger *)lengthp NS_RETURNS_INNER_POINTER;// returned bytes immutable, and they go away with the unarchiver, not the containing autorlease pool

 

(void)finishDecoding;

结束解档  一般情况下是不写这个的

 

 

如果对自定义对象进行归档 需要让自定义对象遵守<</SPAN>NSCoding>协议

实现两个协议方法

(void)encodeWithCoder:(NSCoder *)aCoder

(id)initWithCoder:(NSCoder *)aDecoder

 

 

 

*******************

注:xib其实就是一个归档

 

(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self{

        // Initialization code

    }

    return self;

}

 

 

(id)initWithCoder:(NSCoder *)aDecoder

{

    self [super initWithCoder:aDecoder];

    if (self{

        

    }

    return self;

}

 

所以  如果写了一个view 被使用到了xib中  要再重写这个初始化方法  如下:

(id)initWithFrame:(CGRect)frame

{

    self [super initWithFrame:frame];

    if (self{

        [self makeView];

    }

    return self;

}

 

(id)initWithCoder:(NSCoder *)aDecoder

{

    self [super initWithCoder:aDecoder];

    if (self{

        [self makeView];

    }

    return self;

}

 

 

0 0
原创粉丝点击