iOS对象序列化和反序列化

本文介绍了一个用于存储和管理微博用户信息的Objective-C类。该类包括账号信息、昵称、个性签名、访问令牌及头像等属性,并实现了NSCoding协议以支持序列化和反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <Foundation/Foundation.h>
 
@interface WeiboUserInfo : NSObject<NSCoding>
{
    NSString *m_strDeviceJid;     //绑定的设备的jid
    NSString *m_strDevicePwd;     //绑定的设备的password
    NSString *m_strSinaJid;       //sina帐号的jid
    NSString *m_strSinaPasswd;    //sina帐号密码
    NSString *m_strNickName;      //sina帐号的昵称
    NSString *m_strSinaBrief;         //sina个性签名
     
    NSString *m_strAccessToken;     //sina accessToken
    NSDate *m_strExpirationDate;  //accessToken 到期时间
     
    NSData *m_imgPortraitSmall;     //头像数据(小图片)
    NSData *m_imgPortraitMid;       //头像数据(中图片)
    NSData *m_imgPortraitLarge;     //头像数据(大图片)
}
 
@property (nonatomiccopyNSString *m_strDeviceJid;
@property (nonatomiccopyNSString *m_strDevicePwd;
@property (nonatomiccopyNSString *m_strSinaJid;
@property (nonatomiccopyNSString *m_strSinaPasswd;
@property (nonatomiccopyNSString *m_strSinaBrief;
@property (nonatomiccopyNSString *m_strNickName;
@property (nonatomiccopyNSString *m_strAccessToken;
@property (nonatomic, retain) NSDate *m_strExpirationDate;
 
@property (nonatomic, retain) NSData *m_imgPortraitSmall;
@property (nonatomic, retain) NSData *m_imgPortraitMid;
@property (nonatomic, retain) NSData *m_imgPortraitLarge;
 
@end

.m文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#import "WeiboUserInfo.h"
 
@implementation WeiboUserInfo
@synthesize m_strDeviceJid;     //绑定的设备的jid
@synthesize m_strDevicePwd;
@synthesize m_strSinaJid;       //sina帐号的jid
@synthesize m_strSinaPasswd;    //sina帐号密码
@synthesize m_strNickName;      //sina帐号的昵称
@synthesize m_strSinaBrief;
 
@synthesize m_strAccessToken;     //sina accessToken
@synthesize m_strExpirationDate;  //accessToken 到期时间
 
@synthesize m_imgPortraitSmall;     //头像数据(小图片)
@synthesize m_imgPortraitMid;       //头像数据(中图片)
@synthesize m_imgPortraitLarge;     //头像数据(大图片)
 
- (void)dealloc
{
    [m_strDeviceJid release];
    [m_strDevicePwd release];
    [m_strSinaJid release];
    [m_strSinaPasswd release];
    [m_strNickName release];
    [m_strSinaBrief release];
     
    [m_strAccessToken release];
    [m_strExpirationDate release];
     
    [m_imgPortraitSmall release];
    [m_imgPortraitMid release];
    [m_imgPortraitLarge release];
     
    [super dealloc];
}
 
//将对象编码(即:序列化)
-(void) encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:m_strDeviceJid forKey:@"m_strDeviceJid"];
    [aCoder encodeObject:m_strDevicePwd forKey:@"m_strDevicePwd"];
    [aCoder encodeObject:m_strSinaJid forKey:@"m_strSinaJid"];
    [aCoder encodeObject:m_strSinaPasswd forKey:@"m_strSinaPasswd"];
    [aCoder encodeObject:m_strNickName forKey:@"m_strNickName"];
    [aCoder encodeObject:m_strSinaBrief forKey:@"m_strSinaBrief"];
    [aCoder encodeObject:m_strAccessToken forKey:@"m_strAccessToken"];
    [aCoder encodeObject:m_strExpirationDate forKey:@"m_strExpirationDate"];
    [aCoder encodeObject:m_imgPortraitSmall forKey:@"m_imgPortraitSmall"];
    [aCoder encodeObject:m_imgPortraitMid forKey:@"m_imgPortraitMid"];
    [aCoder encodeObject:m_imgPortraitLarge forKey:@"m_imgPortraitLarge"];
}
 
//将对象解码(反序列化)
-(id) initWithCoder:(NSCoder *)aDecoder
{
    if (self=[super init])
    {
        self.m_strDeviceJid =[aDecoder decodeObjectForKey:@"m_strDeviceJid"];
        self.m_strDevicePwd = [aDecoder decodeObjectForKey:@"m_strDevicePwd"];
        self.m_strSinaJid =[aDecoder decodeObjectForKey:@"m_strSinaJid"];
        self.m_strSinaPasswd =[aDecoder decodeObjectForKey:@"m_strSinaPasswd"];
        self.m_strNickName =[aDecoder decodeObjectForKey:@"m_strNickName"];
        self.m_strSinaBrief =[aDecoder decodeObjectForKey:@"m_strSinaBrief"];
        self.m_strAccessToken =[aDecoder decodeObjectForKey:@"m_strAccessToken"];
        self.m_strExpirationDate =[aDecoder decodeObjectForKey:@"m_strExpirationDate"];
        self.m_imgPortraitSmall =[aDecoder decodeObjectForKey:@"m_imgPortraitSmall"];
        self.m_imgPortraitMid =[aDecoder decodeObjectForKey:@"m_imgPortraitMid"];
        self.m_imgPortraitLarge =[aDecoder decodeObjectForKey:@"m_imgPortraitLarge"];
    }
    return (self);
     
}
 
@end

操作如#define kSinaUserInfo @"sinaBindUserInfo.plist"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
- (void)savePlist
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYES);
    NSString *documentsPath = [paths objectAtIndex:0];
    NSString *selfInfoPath = [documentsPath stringByAppendingPathComponent:kSinaUserInfo];
     
    if ([[NSFileManagerdefaultManager] fileExistsAtPath:selfInfoPath])
    {
        NSMutableArray *mutArrRecord = [[NSMutableArray alloc] initWithContentsOfFile:selfInfoPath];
        for (int i = 0; i < [mutArrRecord count]; i++)
        {
            NSData *dateRecord = [mutArrRecord objectAtIndex:i];
            WeiboUserInfo *weiboUserInfo = [NSKeyedUnarchiver unarchiveObjectWithData:dateRecord];
            if ([weiboUserInfo.m_strDeviceJid isEqualToString:[ABServices currentUserName]])
            {<br>          //移除,写入空
                [mutArrRecord removeObjectAtIndex:i];
                [mutArrRecord writeToFile:selfInfoPath atomically:YES];
                break;
            }
        }
        [mutArrRecord release];
    }
}


转自:http://www.cnblogs.com/zcw-ios/articles/3429680.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值