在IPHONE中有四种方式可以永久存储数据分别是属性列表、归档、SQLITE3、coredata。前两者、后二者操作的时候有些地方是相同的,以属 性列表和归档来说都会用writeToFile/URL:path atomically:flag 和initWithContentofFile/URL:path;两都都不能直接操作基本数据类型,不过前者不能操作自定义的类,而后者可以通过实现 NSCoding协议来达到目的。另外要说点的就是IPHONE每个应用都会有三个文件夹分别是documents、tmp、library分别称为存储 应用的数据,临时数据,数据库。我们要保存的数据会在documents中。由于时间关系抽空再把这个文字写完整些。

#import "dataprocessAppDelegate.h"
@implementation dataprocessAppDelegate
@synthesize window;
@synthesize dataArray;
-(NSString*)pathFileForProcess:(NSString *)pathName{
NSArray *directory=NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
return [[directory objectAtIndex:0] stringByAppendingPathComponent:pathName];
}
z
-(void)writeDataToFile{
firstData = [[NSString alloc] initWithString:@"im first!"];
secondData = [[NSString alloc] initWithString:@"im secondData!"];
thirdData = [[NSString alloc] initWithString:@"im thirdData!"];
NSLog(@"write:\n first: %@ \nscond: %@ \nthird: %@", firstData, secondData, thirdData);
NSMutableArray *tmp = [[NSMutableArray alloc] init];
[tmp addObject:firstData];
[tmp addObject:secondData];
[tmp addObject:thirdData];
self.dataArray = tmp;
[tmp release];[firstData release];[secondData release];[thirdData release];
BOOL bWrite = [dataArray writeToFile:[self pathFileForProcess:@"myTest.txt"] atomically:YES];
}//属性读
-(void)readDataFromFile{
if([[NSFileManager defaultManager] fileExistsAtPath:[self pathFileForProcess:@"myTest.txt"]]){NSMutableArray  *tmpRead = [[NSMutableArray alloc] initWithContentsOfFile:[self pathFileForProcess:@"myTest.txt"]];self.dataArray = tmpRead;[tmpRead release];firstData = [dataArray objectAtIndex:0];secondData = [dataArray objectAtIndex:1];thirdData = [dataArray objectAtIndex:2];NSLog(@"read:\n first: %@ \nscond: %@ \nthird: %@", firstData, secondData, thirdData);
return;
}
NSLog(@"PROCESS FIRLE DOESNT EXITS!");
}#pragma mark -------object-------------
//归档写
-(void)processObjectWrite{
person *pObject= [[person alloc] init];
pObject.name = [[NSString alloc] initWithString:@"wenQiang"];
pObject.profession = [[NSString alloc] initWithString:@"project manager"];
//[pObject setAge:24 andMarry: NO];//NSMutableArray *testData = [[NSMutableArray alloc] init];
NSMutableData *data=[[NSMutableData alloc] init];
NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:pObject forKey:@"kObject"];
[archiver finishEncoding];
Boolean bWrite = [data writeToFile:[self pathFileForProcess:@"object2.txt"] atomically:YES];
if(bWrite) NSLog(@"ok..."); else NSLog(@"write error!");
[archiver release];
//[pObject release];
}、、归档读
-(void)processObjectRead{
NSMutableData *data = [[NSMutableData alloc] initWithContentsOfFile:[self pathFileForProcess:@"object2.txt"]];
NSLog(@"data %@..", data);NSKeyedUnarchiver *unchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
person *tmp = [unchiver decodeObjectForKey:@"kObject"];
[unchiver finishDecoding];NSLog(@"OBJECT: name: %@ profession: %@\nage: %@\n marry:%@", tmp.name, tmp.profession);
[unchiver release];
//[tmp release];//实现
- (void)applicationDidFinishLaunching:(UIApplication *)application {    // Override point for customization after application launch
//[self writeDataToFile];
//[self readDataFromFile];[self processObjectWrite];
[self processObjectRead];[window makeKeyAndVisible];
}- (void)dealloc {[window release];
[dataArray release];[super dealloc];
}@end
//以下是自定义的类
#pragma mark-----------------------class person----------------
#define       kName              @"keyName"
#define       kProfession @"keyProfession"
#define       kAge @"keyAge"
#define       kMarry @"keyMarry"@implementation person
@synthesize name;
@synthesize profession;
#pragma mark---------------nscoding delegate 2 method---------
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:name forKey: kName];
[aCoder encodeObject:profession forKey: kProfession];
// [aCoder encodeObject:Age forKey: kAge];
// [aCoder encodeObject:marry forKey:kMarry];
}
- (id)initWithCoder:(NSCoder *)aDecoder{
if(self = [super init]){
self.name = [aDecoder decodeObjectForKey:kName];
self.profession = [aDecoder decodeObjectForKey:kProfession];
//Age = [aDecoder decodeObjectForKey:kAge];
// marry=[aDecoder decodeObjectForKey:kMarry];
}
return self;
}
#pragma mark ---------------NSCopying 1 method-------------
- (id)copyWithZone:(NSZone *)zone{
person *tmp = [[[self class] allocWithZone:zone] init];tmp.name = [self.name copy];
tmp.profession = [self.profession copy];
return nil;
}-(void)dealloc{
[name release];
[profession release];
[super dealloc];
}
//-(void)setAge:(NSInteger)age andMarry:(Boolean)b{
// Age = age;
// marry = b;
//}@end

转载于:https://www.cnblogs.com/lm3515/archive/2010/12/10/1902119.html

iphone 数据存储之属性和归档archive相关推荐

  1. 数据存储之属性列表Plist

    常用的数据存储有属性列表.偏好设置.归档.sqlite.coreData.上一博客了解了沙盒,现在了解下属性列表Plist. 通常通过NSArray.NSDictionary集合类的WriteToFi ...

  2. iphone数据存储之-- Core Data的使用(一)

    转自:http://www.cnblogs.com/xiaodao/archive/2012/10/08/2715477.html 一.概念 1.Core Data 是数据持久化存储的最佳方式 2.数 ...

  3. 数据存储领域的“归档Archive”

    档案圈的朋友想必对档案领域的"归档"一词已经耳熟能详,按照DA/T 58-2014<电子档案管理基本术语>中的定义,归档(Archiving)是指"按照国家规 ...

  4. IOS数据存储之文件沙盒存储

    前言: 之前学习了数据存储的NSUserDefaults,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. ...

  5. jq选择器 常用方法总结 data数据存储

    dom选择器$符号起步参数形式如css即可 进一步选择元素相关方法: .get()    在你选取的标签之中获取指定的那个索引选取或者属性选取 并且该元素是原生dom 数组形式,故无法实现链式调用 . ...

  6. 1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数...

    笔记的完整版pdf文档下载地址:https://www.evernote.com/shard/s227/sh/aba2aa01-4d96-429d-9bbd-2f285c7c0c79/65772262 ...

  7. iphone开发中数据持久化之——属性列表序列化(一)

    数据持久化是应用程序开发过程中的一个基本问题,对应用程序中的数据进行持久化存储,有多重不同的形式.本系列文章将介绍在iphone开发过程中数据持久化的三种主要形式,分别是属性列表序列号.对象归档化以及 ...

  8. 蓝色巨人将磁带定位为数据存储的集成归档层

    IBM推出了大量和磁带相关的产品,包括为它为高端磁带库提供的新磁带格式和更好的机械臂技术,蓝色巨人将磁带定位为数据存储的集成归档层. 新的TS1140驱动器和格式使每盒磁带可以容纳4TB原生数据--比 ...

  9. Mac 如何使用外部存储设备,移动硬盘备份 iPhone 数据

    Mac 如何使用外部存储设备,移动硬盘备份 iPhone 数据 一.问题描述 前段时间碰到一个问题,我 iPhone 背板碎了,需要走 AppleCare 交给苹果返厂维修,而我的 iPhone 是 ...

最新文章

  1. [翻译] ObjectAL for iPhone and Mac(持续更新)
  2. exchange 2007 碰到NDR
  3. recovery v1跟recovery v2的区别
  4. 图片自动翻转css代码,用css实现图片翻转(示例代码)
  5. (pytorch-深度学习)门控循环单元(GRU)
  6. java让两个线程交替_java两个线程实现: 两个线程交替打印字母和数
  7. 为什么越来越多的人都不喜欢用信用卡?
  8. C++封装Mysql数据库
  9. 10个好用的免费图片网站,绝对能在2021年设计上好帮手
  10. 无锡江苏高性能服务器服务商,无锡高防云服务器
  11. 黑盒子法探索人脑逻辑模型备忘录
  12. dom4j解析xml错误-version 后面跟随的值必须是用引号括起来的字符串
  13. JavaScript—箭头函数
  14. 图片变色HSV-shader
  15. 一种射频卡读写原理及实现
  16. CF337A Maze 解题报告
  17. 服务器金蝶上机日志在哪个文件夹,金蝶软件如何查看某用户的上机日志
  18. 模拟九:STEMA 考试编程题 C++模拟练习试卷(初级组)
  19. 试用D触发器和4选1数据选择器74153设计一个双向3位移位寄存器, 具体要求见下表(A、B为控制端), 左移串行输入信号为L, 右移串行输入信号为R
  20. 毕业设计 - 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

热门文章

  1. pycharm里创建django项目竟然没有django选项
  2. HTTP协议入门——1.1版本
  3. android+证书存储,Firefox for Android是否使用设备证书存储?
  4. linux php pdo server,linux服务器用PHP的PDO链接myql方法(php pdo)
  5. java、python什么意思_Python为什么叫Python,Java又如何而来?
  6. Linux vector最大存储数量,C++ STL vector容量(capacity)和大小(size)的区别
  7. 测视力距离5米还是3米_视力表只能看到0.3,相当于近视度数200度?
  8. html5获取城市,HTML5 geolocation API获得用户当前城市名
  9. linux内核oops错误码说明,调试 – 了解内核oops错误代码
  10. python function terminated un_绕过 RestrictedUnpickler