oc基础知识5:归档

原创 2013年12月02日 17:22:31

    1、XML属性列表

    对于NSString、NSArray 、NSDictionary、 NSNumber、 NSDate、 NSData 类以及他们的变体可以使用在这些类中的方法将属性列表写入文件中,根据字典创建属性列表是,字典中的间必须全都是NSStriing对象。数组中的元素或字典中的 值可以是其它类型的。(writrToFile:atomically:方法中第一个冒号后面是要读入的文件名或文件路径,而atoically后面跟的参数的值是BOOL类型的,用于决定是否先将文件内容保存在临时文件中,当文件保存成功后,再将临时文件和原始文件交换,防止原始文件被破坏)

     要将文件中的属性列表读入程序时,如果要读回的是字典,用dictionaryWithContentsOfFile:方法,要读回数组,用arrayWithContentsOfFile:方法;要读回数据,用dataWithContentsOfFile:方法;要读回字符串,用stringWithContentsOfFile:方法;但是,这些函数有一个缺点:他们不会返回任何错误信息,如果不能加载文件,只能从方法中得到nil只能,不能确定出现了哪种错误。

 

例子:

 

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[])

{

    @autoreleasepool {
       
       //定义并初始化数组
         
        NSArray *array;
       
        array=[NSArray arrayWithObjects:@"one",@"two",@"three", nil];
        
       //将数组读入文件xml.txt文件中
       
       [array writeToFile:@"/Users/puke/Desktop/xml.txt" atomically:YES];
       
      //定义一个新数组,将数组从文件中读到新数组中,并输出
      
        NSArray *arr;
       
        arr=[NSArray arrayWithContentsOfFile:@"/Users/puke/Desktop/xml.txt"];
       
        NSLog(@"
%@",arr);

  
         }
   
        return 0;

}

 

 

 

      2、用NSKeyedArchiver归档

      对于以上的基本oc 类对象,以及嵌套的对象,可以用NSKeyedArchiver进行归档;将归档文件读到程序中,用NSKeyedUnarchiver  方法;

      下面是一个例子:

 

       

#import <Foundation/Foundation.h>

#import <Foundation/NSKeyedArchiver.h>

int main(int argc,const char *argv[])

{
    @autoreleasepool{
       
         //创建并初始化一个字典类型的对象
      
           NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:
                         
               @"A class defined so other class can inherit from it",
                          
               @"abstract class",
                          
               @"To implement all the methods defined in a protocol",
                         
               @"adopt",
                         
               @"Storing an object for later use",
                          
               @"archiving",
                         
               nil];
      
       //将字典内容归档到文件dic.txt中
      
         [NSKeyedArchiver archiveRootObject:dic toFile:@"/Users/puke/Desktop/dic.txt"];
       
      //创建一个新字典,将文件中的内容读到新字典中,并输出
      
        NSDictionary *new;
       
        new=[NSKeyedUnarchiver unarchiveObjectWithFile:@"/Users/puke/Desktop/dic.txt"];
       
       
         for(NSString *key in new)
      
         {
           
             NSLog(@"%@ :%@",key,[new objectForKey:key]);
     
          }
       
  
       }
   
        return 0;

}

 

 

       3、解码和编码

       对与不属于以上列出的对象的对象,要遵守NSCoding协议,在类定义中添加encodeWithCoder:方法和initWithCoder:方法进行解码和编码,以便告知系统如何归档;

       

      

     

OC基础知识汇总

OC部分 第一部分   基本概念  OC概述 OC是一种能够完成复杂面向对象编程的简单的计算机设计语言。 通过提供用于定义类和方法的语法,它扩展了标准的c语言。它还提供了类和接...
  • u014165686
  • u014165686
  • 2014年08月11日 20:06
  • 1264

OC学习篇之---归档和解挡

对象编码 预备知识 类定义协议 相关文章 归档属性表对象生命周期 对象编码把对象的类特征以及对象状态转化某种格式,这种格式可存储,也可在进程间传递。类的类型以及实例数...
  • yidu_blog
  • yidu_blog
  • 2016年04月01日 18:06
  • 930

OCiOS开发:数据持久化之属性列表、归档、NSUserDefaults

应用沙盒简介 iOS系统为每个应用程序提供了独立的存储空间“沙盒”。 每个应用程序都遵守沙盒机制,即程序仅能访问自身所属沙盒空间内的数据。 沙盒为程序主路径,包含以下目录:Document:存储用户自...
  • Hierarch_Lee
  • Hierarch_Lee
  • 2015年08月19日 18:05
  • 6015

iOS runtime讲解,并且用runtime动态归档与解档

// //  AppDelegate.m //  Runtime自动归档 // //  Created by CONGAING on 15/7/13. //  Copyright...
  • oQingTing12345
  • oQingTing12345
  • 2015年10月06日 09:14
  • 1673

oc基础知识(5)

/ // main.m // oc5 // // Created by ChenZiyan on 16/4/17. // Copyright © 2016年 ChenZiyan. All ri...
  • wz_chan
  • wz_chan
  • 2016年04月20日 19:00
  • 100

OC中的归档和反归档

所谓的归档和反归档也就是我们将数据存储到文件中,和从文件中获取数据,和字符串数组不同的是对象的归档是比较复杂的这个地方我们就通过一个例子来演示一下怎样在OC中实现归档和反归档。 首先我们要做的是是创...
  • datouniao1
  • datouniao1
  • 2016年01月23日 13:11
  • 219

OC基础知识点的总结(全),学习OC的日记

类的方法 1.在加号方法中不能使用实例变量,实例变量是依托于对象存在的只有有了对象,实例变量才会有空间 2.self 谁调用该方法,self就代表谁 当方法是一个减号方法时, 调用该方法的对象是...
  • u010774394
  • u010774394
  • 2014年08月17日 23:12
  • 1234

iOS之沙盒路径和本地数据存储方式plist/归档/偏好设置(一)

沙盒简介:沙盒文件系统目录,每个iOS应用都有自己引用沙盒,iOS系统不允许访问其他应用的沙盒,iOS只开放了一部分沙盒:docunment,library(包含caches和preference),...
  • u011146511
  • u011146511
  • 2016年04月26日 22:29
  • 976

iOS激情详解之文件夹创建,移动,复制,删除以及归档和反归档

主要代码精髓: #import "RootViewController.h" #import “DXModel.h" #define kDocumentPath [NSSearchPathForD...
  • dfxr152
  • dfxr152
  • 2015年09月18日 22:50
  • 1969

OC基础17:归档

1、归档即是用某种格式把一个或多个对象保存起来,以便以后还原回来的一个过程。一般归档数据有两种方法:属性列表归档和带键值的归档。   2、使用XML属性列表进行归档:    (1)、...
  • shayneyeorg
  • shayneyeorg
  • 2015年10月09日 11:29
  • 231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oc基础知识5:归档
举报原因:
原因补充:

(最多只允许输入30个字)