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

序列化与反序列化

    博客分类:
  • ios
 
阅读更多

下面介绍下Object C中通过NSKeyedArchiver序列化与反序列化:

序列化中将对象写到文件中,反序列化则从文件中读取数据并构造对象。NSKeyedArchiver需要实现NSCoding中的两个函数initWithcoder()和encodeWithCoder()。

代码如下

//
//  SoreCard.h
//  SerializationTest
//  序列化与反序列化
//  Created by Dwen on 12-11-22.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>

@interface SoreCard : NSObject<NSCoding>

@property (strong,nonatomic) NSString *bestTime;
@property (strong,nonatomic) NSMutableArray *allTime;

- (void) create;
- (void) print;
@end
#import "SoreCard.h"
@implementation SoreCard
@synthesize bestTime;
@synthesize allTime;

- (id)initWithCoder:(NSCoder *)aDecoder{
    if (self == [super init]) {
        bestTime = [aDecoder decodeObjectForKey:@"bestTime"];
        allTime = [aDecoder decodeObjectForKey:@"allTime"];
    }
    return self;
}

- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:bestTime forKey:@"bestTime"];
    [aCoder encodeObject:allTime forKey:@"allTime"];
}

- (void) create{
    bestTime = @"序列化与反序列化测试";
    allTime = [[NSMutableArray alloc] initWithObjects:@"中国",@"美国",@"德国", nil];
}

- (void) print{
    NSLog(@"BestTime name : %@",bestTime);
    for(NSString *str in allTime){
        NSLog(@"str : %@",str);
    }
}

@end
//
//  main.m
//  SerializationTest
//
//  Created by  on 12-11-22.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>

#import "AppDelegate.h"
#import "SoreCard.h"

#define ARCHIVE 0
#define UNARCHIVE 1

int main(int argc, char *argv[])
{
    @autoreleasepool {
        //路径
        NSString *homePath = [[NSBundle mainBundle] executablePath];
        NSArray *strings = [homePath componentsSeparatedByString: @"/"];
        NSString *executableName  = [strings objectAtIndex:[strings count]-1];	
        NSString *baseDirectory = [homePath substringToIndex:
                                   [homePath length]-[executableName length]-1];	
        
//        NSString *fileName = [NSString stringWithFormat:@"%@/roster.archive",baseDirectory];
        NSString *fileName = [NSString stringWithFormat:@"%@/test.txt",baseDirectory];
        NSLog(@"filePath: %@",fileName);
        
#if ARCHIVE
        SoreCard *card = [[SoreCard alloc] init];
        [card create];
        //将类写入文件
        [NSKeyedArchiver archiveRootObject:card toFile:fileName];
#endif
    
#if UNARCHIVE
        //将类从文件中读出
        SoreCard *soreCard = [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];
        [soreCard print];
#endif
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    C++ JSON 序列化与反序列化

    本篇文章将深入探讨C++中JSON的序列化与反序列化。 **一、JSON序列化** 序列化是指将C++的对象转换为JSON字符串的过程,以便在网络上传输或保存到文件中。常见的C++ JSON序列化库有RapidJSON、nlohmann/json、...

    XML序列化与反序列化 实战

    XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...

    Json序列化与反序列化

    总结来说,JSON序列化与反序列化是现代Web开发中不可或缺的一部分,它提供了数据交换的标准格式,使得不同语言和平台之间的数据交互变得简单高效。正确理解和使用这一技术,能够极大地提升开发效率和软件的可维护性...

    (转)客户端访问Web Service--参数类型的序列化与反序列化(二)

    在本文中,我们将深入探讨客户端访问Web Service时涉及的参数类型的序列化与反序列化,这是Web Service通信过程中的关键环节。 首先,我们要理解什么是序列化和反序列化。序列化是将对象的状态转换为可以存储或传输...

    hashtable序列化与反序列化

    本文将详细探讨标题所提及的“hashtable序列化与反序列化”,并提供一个基本的示例。 首先,让我们理解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Java中,对象序列化允许我们将一个...

    序列化与反序列化Demo

    序列化与反序列化是计算机科学中的重要概念,特别是在数据存储、网络通信和持久化对象等领域。简单来说,序列化是将对象的状态转换为可存储或传输的数据格式的过程,而反序列化则是将这种数据格式恢复为原来的对象...

    delphi序列化与反序列化

    本文将深入探讨Delphi中的序列化与反序列化,以及如何处理组件和结构体的序列化。 首先,让我们了解什么是序列化。序列化是指将一个对象的状态转换为可以存储或传输的数据格式的过程。这通常是一个二进制流或者XML...

    java serializable 序列化与反序列化

    Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...

    xml文件的序列化与反序列化

    这是类编译后的dll动态链接库,其中含有对xml文件的序列化与反序列化操作,利用其可以实现对xml文件几乎全部的复杂操作。

    VB.NET XML和JSON序列化与反序列化

    在VB.NET编程环境中,XML和JSON序列化与反序列化是常见的数据处理技术,用于将对象转换为文本格式(XML或JSON),以便于存储、传输和解析。这两者都是轻量级的数据交换格式,广泛应用于Web服务和客户端应用程序之间...

    XmlDemoTranfer Xml序列化与反序列化

    Xml序列化与反序列化是.NET框架中一种重要的数据转换技术,主要应用于将对象的状态转换成XML格式的字符串,便于存储或传输,同时也能够将XML数据还原为对象。在C#编程中,这一功能通常通过System.Xml.Serialization...

    Java Json序列化与反序列化

    Java中的JSON(JavaScript Object Notation)序列化与反序列化是开发过程中常见且重要的操作,主要用于数据交换和存储。JSON是一种轻量级的数据交换格式,它允许我们将Java对象转换为JSON字符串,反之亦然,方便在...

    C#源码序列化与反序列化

    1. **什么是序列化与反序列化?** - **序列化**:是将对象的状态转化为可持久化的格式(如XML、JSON、二进制等),使得对象可以在不同时间点或者不同环境之间进行传输和保存。 - **反序列化**:是序列化的逆过程,...

    详细案例介绍json序列化与反序列化

    ### 详细案例介绍json序列化与反序列化 #### JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。它最初由Douglas Crockford提出,广泛应用于Web应用程序的数据传输中...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    Java对象的序列化和反序列化...总的来说,Java对象的序列化与反序列化是Java平台中一种强大的工具,它能够帮助开发者在多种场景下有效地处理对象数据。理解并掌握这项技术,对于提升Java应用程序的性能和功能至关重要。

    基于boost的序列化与反序列化

    在编程领域,序列化和反序列化是两个关键的概念,它们用于将对象的状态转换为可存储或可传输的格式,然后在需要时恢复为原始对象。Boost库提供了一个强大的工具——Boost.Serialization,来帮助程序员实现这个功能。...

    XML文件序列化与反序列化

    本篇文章将详细探讨XML文件的序列化与反序列化,并介绍如何读取XML文件中的指定节点。 **XML序列化** XML序列化是将对象的属性和字段转换为XML文档的过程。在.NET中,我们可以使用`XmlSerializer`类来实现这一功能...

    json序列化与反序列化实例

    在.NET框架中,处理JSON序列化与反序列化的任务通常由Json.NET库完成,这是一个强大的、高性能的JSON框架。 **JSON序列化** 是将对象转换为JSON字符串的过程。这使得数据可以在不同系统之间传递,因为JSON是一种...

Global site tag (gtag.js) - Google Analytics