• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

objective-C自定义对象归档的实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

自定义对象要实现归档必须实现NSCoding协议

NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象。

 

#import <Foundation/Foundation.h>


@interface user : NSObject <NSCoding>

@property(nonatomic,retain)NSString *name;

@property(nonatomic,retain)NSString *email;

@property(nonatomic,retain)NSString *pwd;

@property(nonatomic,assign)int age;

@end

#import "user.h"

#define AGE @"age"

#define NAME @"name"

#define EMAIL @"email"

#define PASSWORD @"password"


@implementation user


//对属性编码

- (void)encodeWithCoder:(NSCoder *)aCoder

{

    [aCoder encodeInt:_ageforKey:@"age"];

    [aCoder encodeObject:_nameforKey:AGE];

    [aCoder encodeObject:_emailforKey:EMAIL];

    [aCoder encodeObject:_pwdforKey:PASSWORD];

}


//对属性解码

- (id)initWithCoder:(NSCoder *)aDecoder

{

    self=[super init];

    if(self)

    {

        self.age=[aDecoderdecodeIntForKey:AGE];

        self.name=[aDecoderdecodeObjectForKey:NAME];

        self.email=[aDecoderdecodeObjectForKey:EMAIL];

        self.pwd=[aDecoderdecodeObjectForKey:PASSWORD];

    }

    returnself;

}


-(void)dealloc

{

    [_name release];

    [_email release];

    [_pwd release];

    [super dealloc];

}

@end

 

main函数的调用

 

    user *userObj=[[user alloc] init];
        userObj.age=33;
        userObj.email=@"[email protected]";
        userObj.pwd=@"212212";
        userObj.name=@"ricard";
        
        NSString *path=[NSHomeDirectory() stringByAppendingPathComponent:@"Desktop/custom.text"];
        BOOL succ=[NSKeyedArchiver archiveRootObject:userObj toFile:path];
        if (succ) {
                    NSLog(@"Hello, World!");
            user *usertemp=[NSKeyedUnarchiver unarchiveObjectWithFile:path];
            
        }


 


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Xcode4.4中LLVMcompiler4.0带来的Objective-C新语法特性发布时间:2022-07-12
下一篇:
json字符串跟objective-c模型的相互转换发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap