`
zcw_java
  • 浏览: 303703 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ios序列化对象存储本地

 
阅读更多
#import <Foundation/Foundation.h>

@interface WeiboUserInfo : NSObject<NSCoding>
{
    NSString *m_strDeviceJid;     //绑定的设备的jid
    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_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


#import "WeiboUserInfo.h"

@implementation WeiboUserInfo
@synthesize m_strDeviceJid;     //绑定的设备的jid
@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_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_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_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


声明好之后在调用时就可以存本地plist了,以下调用函数
WeiboUserInfo *weiboUserInfo = [NSKeyedUnarchiver unarchiveObjectWithData:[m_arrUserInfo objectAtIndex:indexPath.row]];

NSData *date = [NSKeyedArchiver archivedDataWithRootObject:m_weiboUserInfo];
分享到:
评论

相关推荐

    ios-本地存储.zip

    4. **归档与解档**:对于自定义对象,可以使用NSCoding协议进行序列化和反序列化,将对象转化为二进制数据存储到文件中。 5. **文件系统**:直接将文件存储在沙盒内,适用于图片、音频等大文件。 6. **云同步服务*...

    ios应用源码之自动序列化autoencodedecode 20181210

    在iOS应用开发中,数据序列化是一个至关重要的过程,它涉及到将对象转换为可以存储或传输的数据格式,如JSON或二进制。本资源“ios应用源码之自动序列化autoencodedecode 20181210”提供了一个关于如何在iOS应用中...

    swift-Serpent基于协议的对象和结构的正反向序列化JSON及转换库

    在Swift中,JSON序列化通常用于将模型对象转换成JSON格式,以便在网络上传输或保存到本地文件,而反序列化则用于从JSON数据重建对象实例。 Serpent库的核心特点在于它的协议驱动设计。通过定义一个名为`...

    IOS数据一键存储框架

    - "JSON":可能表示框架支持将数据以JSON格式导入导出,方便数据交换和序列化。 - "runtime":如前所述,是Objective-C的运行时系统,用于动态操作类和对象。 **子文件名解析:** "YUDBObjectSample" 这个文件名...

    ios-利用NSCoding与runtime实现模型本地存储.zip

    `NSCoding`是Apple提供的一种序列化机制,用于对象的编码和解码,从而实现数据的持久化。当一个类遵循`NSCoding`协议时,需要实现两个方法:`encodeWithCoder:`和`initWithCoder:`。前者负责将对象编码为可以存储的...

    Unity5json解析工具,支持android/ios泛型列表参数正反序列化

    本资源是一个针对Unity5的JSON解析工具,特别强调对Android和iOS平台的支持,以及泛型列表参数的正反序列化功能。 在Unity5中,内置的`JsonUtility`类是Unity提供的基础JSON解析和序列化工具。这个工具允许开发者将...

    ios-用列表显示本地数据.zip

    此外,第三方库如SwiftyJSON和Alamofire的JSON序列化功能也可以简化这一过程。 4. **UITableView或UICollectionView**:在iOS中,列表展示通常使用UITableView或UICollectionView。UITableView适用于行列表形式的...

    IOS应用源码之断点续传队列和本地持久化.zip

    例如,可以将下载任务的信息序列化为JSON或Plist文件,然后在应用启动时反序列化并重新加载到队列中。此外,还可以利用Core Data来存储更复杂的数据结构,如每个下载任务的详细信息,包括URL、下载状态、文件大小、...

    ios-数据存储管理类.zip

    `NSCoding`是Apple提供的一个接口,用于序列化和反序列化对象,即将对象转换为字节流(存储)和从字节流恢复对象(读取)。以下是对`NSCoding`协议和iOS数据存储的详细解释。 1. **什么是`NSCoding`协议?** `...

    iOS对象转字典 object2Dictionary

    这种转换在序列化和反序列化过程中扮演着关键角色,使得数据能够在网络之间传输和存储。 首先,让我们讨论对象转字典的过程。在Objective-C中,我们可以使用NSKeyedArchiver和NSKeyedUnarchiver来实现。`...

    ios-搜索关键字本地保存,推荐关键字随时接入.zip

    对于搜索记录,可能使用`NSKeyedArchiver`进行序列化,将搜索关键字对象转化为二进制数据并存储到文件,以便后续读取和使用。 2. **推荐关键字**:应用可能提供推荐搜索功能,这需要一个关键词库。关键词可以通过...

    ios-本地数据持久化JSON格式(自己封装好的类) 易懂好用.zip

    在iOS中,可以使用内置的NSJSONSerialization类进行JSON的序列化和反序列化操作。 3. JGGchijiuhua类的使用: 这个自封装的类旨在简化JSON格式的数据读写过程。使用步骤如下: a. 将JGGchijiuhua.h和JGGchijiuhua...

    iOS_Protobuf

    开发者通常会将业务对象转换为Protobuf消息,然后在网络中发送或存储在本地。通过这种方式,可以减少数据传输量,提高应用程序的性能。项目内包含的“.proto”文件是Protobuf的接口定义文件,它定义了消息结构和字段...

    ios-深拷贝对象.zip

    KNArchiveModel是一个常用的第三方库,它提供了一种简单的方式来序列化和反序列化Objective-C或Swift对象,包括深拷贝功能。使用这个库,开发者可以轻松地将对象转化为字节流(存储到磁盘或网络传输),然后在需要时...

    iOS实现图片存在本地、再从本地获取图片的功能

    `NSUserDefaults` 是一个简单且常用的数据存储类,虽然它主要用于轻量级的数据持久化,如用户偏好设置,但也可以用于存储像图片这样二进制数据的序列化版本。下面我们将详细探讨如何利用`NSUserDefaults` 实现图片的...

    ios-数据持久化.zip

    数据持久化时,可以先将列表数据序列化,然后存储到本地,当应用启动时再反序列化并填充到列表控件。 综上所述,“ios-数据持久化.zip”资源涵盖了数据持久化的基本概念,特别是通过归档解档和JSON序列化来保存...

    Unity 数据本地存储插件-Easy Save 3.3.2版本

    序列化是指将复杂的数据结构转化为可以存储或传输的形式,而反序列化则是相反的过程,将存储的数据恢复为原本的对象。在Unity中,这个过程通常涉及到将游戏对象、脚本字段等转换为JSON、XML或二进制格式。`Easy Save...

    iOS开源中国app完整源码

    2. **网络请求**:iOS应用通常使用URLSession进行网络请求,对于JSON数据,会用到JSONSerialization进行序列化和反序列化。若项目使用了第三方库,如Alamofire或AFNetworking,可以简化HTTP请求的处理。 3. **数据...

    Coding iOS客户端开源

    在iOS开发中,`NSCoding` 是一个非常重要的协议,它允许对象进行序列化和反序列化,即将对象的状态转化为可以存储或传输的数据格式,然后再还原回来。在标题提到的"Coding iOS客户端开源"项目中,`NSCoding` 被用于...

    ios-缓存.zip

    归档和反归档是Objective-C中的数据持久化方法,它利用NSCoding协议来实现对象的序列化和反序列化。当对象需要被存储时,会被转化为二进制数据(归档);当需要恢复时,二进制数据再转换回对象(反归档)。在本项目...

Global site tag (gtag.js) - Google Analytics