ios 對象序列化與反序列化(存儲plist文件)


.h

#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 (nonatomic, copy) NSString *m_strDeviceJid;
@property (nonatomic, copy) NSString *m_strDevicePwd;
@property (nonatomic, copy) NSString *m_strSinaJid;
@property (nonatomic, copy) NSString *m_strSinaPasswd;
@property (nonatomic, copy) NSString *m_strSinaBrief;
@property (nonatomic, copy) NSString *m_strNickName;
@property (nonatomic, copy) NSString *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文件

#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"

- (void)savePlist
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    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]])
            {
          //移除,寫入空 [mutArrRecord removeObjectAtIndex:i]; [mutArrRecord writeToFile:selfInfoPath atomically:YES]; break; } } [mutArrRecord release]; } }

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM