iPhone App开发实战手册学习笔记(4)之数据处理
2013-06-06 14:10
190 查看
1 前言
今天我们介绍一下IOS中一些常见的数据操作。2 详述
2.1 深度复制
有时候会发送一个 -copy 消息来进行集合的赋值,但这样往往得到的是一个浅拷贝。这样赋值得到的集合可以对原始集合中的对象就行修改,但这些对象往往在多个集合中是共享的。深度赋值一个集合,需要用到copy items方法。例如:对于NSArray,需要使用 -initWithArray:copyItems:方法。
NSArray* original = [NSArray arrayWithObjects:@"A",@"B",nil];
NSArray* shallowCopy = [original copy];
NSArray* deepCopy = [[NSArray alloc] initWithArray:original copyItems:YES];
在shallowCopy中,其中两个对象与original中的一样。而在deepCopy中,则有两个新的“A”和“B”实例。
NSDictionary和NSSet具有相同的模式,都有-initWithDictionary:copyItems:和-initWithDictionary:copyItems:方法。
2.2 属性列表
NSArray和NSDictionary都提供了-writeToFile:atomically:方法来保存集合,也提供了+arrayWithContentsOfFile:和+dictionaryWithContentsOfFile:方法用以读取文件中的内容。属性列表(property list)是一个标准的格式,是Cocoa Touch中的一种轻量便携式的持续机制。属性列表使用一个.plist后缀的文件夹来存储对象实例。
使用属性列表时,重要的是使用一下几个类:NSArray,NSDictionary,NSString,NSData,NSDate和NSNumber。这些对象可以存储到文件中。
2.3 MutableCopy
IOS中字符串或者集合都分为可变和不可变两种,如NSString和NSMutableString,如果想让一个不可变的数据变为可变,可以使用-mutableCopy方法,例如:NSArray* characters = [NSArray arrayWithObjects:@"A",@"B",nil];
NSMutableArray* mutableCharacters = [characters mutableCopy];
在处理集合的时候,-mutableCopy和-copy一样,执行的是浅拷贝。
注意,并不能对任意对象生成可变的拷贝,被复制的类需要支持NSMutableCopy协议。所有值对象和集合都支持该协议。
2.4 使用copy保护我们的数据
加入上面创建的mutableCharacters被使用,如果我们不小心把他的副本修改了可能会导致程序混乱,我们可以用下面方式来保护其不受破坏:NSArray* result = (NSArray*)[[mutableCharacters
copy] autorelease ];
这样我们就又可以把可变的数组转化为不可变,而其他人无法修改该数组了。
3 结语
以上是所有内容,希望对大家有所帮助。相关文章推荐
- JS中eval()函数处理返回的json数据
- 数据库分页处理(取出数据表中从M-N的记录)
- ajaxupload返回带有pre标签的数据处理方法
- 用.NET 2.0压缩/解压功能处理大型数据
- Wijmo 更优美的jQuery UI部件集:运行时处理Wijmo GridView数据操作
- 浅谈ASP.net处理XML数据
- 计算机视觉与图像处理学习笔记(三)opencv的基本数据类型与简单图像处理函数
- Excel数据大量导入MySQL--MySQL数据换行符回车符替换处理
- ajax接收遍历处理json格式数据
- mysql大数据高并发处理
- python 处理底层数据
- 如何处理串口通讯数据重合与分批到达的问题
- 利用SQL 2005 CTE处理树型数据
- 【直播课】数据事务处理技术MySQL/TDSQL与PostgreSQL
- ASP.NET 2.0中XML数据的处理
- 对XML中的数据初步处理
- 数据缺失值的4种处理方法
- 【数据平台】sklearn库特征工程之数据预处理
- spring对一些常见数据类型的配置处理
- 大数据处理的架构逻辑