一. 使用NSKeyedArchiver类操作对象的存取

特点:该类可以将对象以键值对的形式存入文件,并通过key从文件中取出,与android中的SharedPreference用法类似,而且它序列化后的数据是加密的

1. 将数据存入文件:

  1. NSString *rootDir = NSHomeDirectory();
  2. NSString *path = [rootDir stringByAppendingPathComponent:@"test.txt"];
  3. NSMutableData *data = [NSMutable data];
  4. NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingMutableData:data];
  5. NSArray *array = @[@"one",@"two"];
  6. [archiver encodeInt:100 forKey:@"age"];//相当于SharedPreference的putInteger(key,value);
  7. [archiver encodeObject:array forKey:@"names"];//
  8. [archiver finishEncoding];//此方法调用,则将数据存入data
  9. [archiver release];
  10. if([data writeToFile:path atomically:YES]){
  11. NSLog(@"对象存入文件成功");
  12. }

2. 将数据从文件中取出

  1. NSData *data = [NSData dataWithContentOfFile:path];
  2. NSKeyedArchiver *unarchiver =[[NSKeyedArchiver alloc] initForReadingWithData:data];
  3. int age = [unarchiver decodeIntForKey:@"age"];//取出值
  4. NSArray *array = [unarchiver decodeObjectForKey:@"names"];
  5. [archiver release];

二. 使用NSUserDefaults类操作对象的存取

特点:该类将对象以键值对的形式存入系统固定的plist缓存文件,并通过key从文件中取出,与android中的SharedPreference应用场景一样,用于缓存小型简单的缓存数据

  1. //1. 存入数据
  2. NSArray *array = @[@"abc",@"d"];
  3. NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
  4. [userDefault setInteger:123 forKey:@"number"];
  5. [userDefault setObject:array forKey:@"array"];
  6. [userDefault synchronize];//存入文件
  7. //2. 取出数据
  8. NSInteger number = [userDefault integerForKey:@"number"];
  9. NSArray *array = [userDefault objectForKey:@"array"];

iOS数据存取和对象序列化的更多相关文章

  1. iOS数据存储之对象归档

    iOS数据存储之对象归档 对象归档 对象归档是iOS中数据持久化的一种方式. 归档是指另一种形式的序列化,但它是任何对象都可以实现的更常规的类型.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文 ...

  2. iOS数据存取---iOS-Apple苹果官方文档翻译

    CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...

  3. iOS 数据持久性存储-对象归档

    对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为解档,反序列化) 主要涉及两个类:NSKeyedArichiver.NSKey ...

  4. iOS开发系列--数据存取

    概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...

  5. 【转】iOS开发系列--数据存取

    原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...

  6. mybatis存取blob对象+@Cacheable实现数据缓存

    参考文档: http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 需求场景: 当前业务通过第三方接口查询一个业务数据, ...

  7. Activity之间传递数据或数据包Bundle,传递对象,对象序列化,对象实现Parcelable接口

    package com.gaojinhua.android.activitymsg; import android.content.Intent; import android.os.Bundle; ...

  8. Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值

    1 Statement和PreparedStatement的特点   a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录   b)对于创建和 ...

  9. Go Web:数据存储(3)——gob对象序列化

    序列化持久存储gob 1.内存存储 2.CSV文件存储 3.gob序列化存储 本篇文章仍然接前面的文章:内存存储,主要介绍将博客文章数据序列化持久到文件中. encoding/gob包用于编码器和解码 ...

随机推荐

  1. The Network Adapter could not establish the connection问题研究

    最近一个项目会报上述错误,但也不是经常发生,所以很难跟踪,影响不是很大,但每次看到日志中这个错误就会不舒服,还是要想办法解决才是. 错误提示信息很明确是网络适配器不能创建连接. 查了很多资料,并且Or ...

  2. python 练习 9

    #!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1,5): for j in range(1,5): for k in range(1 ...

  3. ubuntu 系统出错一览

    1.系统升级出错:打开终端输入:sudo apt-get install -f

  4. 第四周 更新Scrum站立会议

    项目名称:连连看游戏(C#) 小组名称:4Boys 小组成员:武志远.李权.张金生.张政 站立会议内容 昨天完成的: 1.张金生主要介绍了自己完成了游戏界面 2.武志远主要负责查阅关于技术方面的资料, ...

  5. hdu 1695 GCD(莫比乌斯反演)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. DOI EXCEL显示报表

    我这个是比较不规则的数据填充 1.程序开头,定义一个工作区,存对应单元格的值: BEGIN OF TY_EXCEL, C031() TYPE C, C032() TYPE C, C033() TYPE ...

  7. javascript 数组操作 转

    javascript之数组操作 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一 ...

  8. nssm在windows服务器上部署nodejs,coffee启动方式

    本想用forever / pm2 来部署nodejs, 百度后发现只能在Linux系统上使用,window上没法使用,兜一圈后又转nssm了.... 在Linux上,可以轻松的使用forever或者p ...

  9. BZOJ1737 [Usaco2005 jan]Naptime 午睡时间

    断环然后裸DP就好了... $f[i][j][k]$表示1号时间段没有被算入答案,到了第$i$个时间段,一共选了$j$个时间段,$k = 0 /1$表示第i个时间段有没有被算进答案的最优值 $g[i] ...

  10. linux 新增挂载新硬盘

    1. 添加磁盘,查看磁盘状况 [root@db1 /]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 heads, 63 sector ...