Cocoa 提供了CoreData在后台处理所有文件内容,还提供了两个通用的文件处理类:
- 属性列表
在Cocoa中,有意诶名为属性i的对象简写为plist 。这些列表包含Cocoa知道如何操作的一组对象。具体来讲Cocoa 知道如何将他们保存到文件中并进行加载。属性列表类包括NSArray、NSDictionary 、NSString、NSNumber 、NSData 和NSDate,以及他们的变体。
- 对象编码
Cocoa具备一种机制来将对象自身转换为某种格式并保存到磁盘中。对象可以将他们的实例变量和其他数据编码为数据块,然后保存在磁盘中。以后还将这些数据块读回到内存中,并且还能机遇保存的数据创建新对象。这个过程称为
编码和
解码,
或者称为
序列化
和
反序列化。
对于任何Object-C对象类型,都可以使用encodeObject:forKey:,每种类型都有不同的encodeObject:forKey:。如果需要回复某个对象,则使用decodeSomethingForKey:方法。
NSDate
用于处理时间和日期。
NSDate *date = [NSDate date ];
NSLog (@"today is %@",date );
将输出当前时间结果。
NSData
NSData是一个对象,将数据块传递给一个函数或方法,无需担心内存清除问题。NSData对象时不可改变的,他们被创建之后就不能改变。可以使用它们,但不能更改其中的内容。但是NSMultableData支持在数据内容中添加和删除字节。
const char *string ="Hi there ,this is a C string.";
NSData *data =[NSData dataWithBytes:string
length :strlen(string)+1];
NSLog(@"data is %@",data )
写入和读取属性列表
- 集合属性列表类(NSArray、NSDictionary )具有方法-writeToFile:atomically :用于将属性列表写入文件;
- NSString 和NSData也具有writeToFile:atomically:方法写出字符串或者数据块。
//将数据存储在文件中
NSArray *array;
array =[NSArray arrayWithObjects:@"I",@"seem",@"to",@"be",@"a",@"verb",nil];
[array writeToFile:@"/tmp/verb.txt"atomically:YES ];
//读取文件
NSArray *array1 = [NSArray rrayWithContentsOfFile:@"/tmp/verb.txt "];
NSLog(@"%@",array1 );
这些函数的缺点是:他们不会反悔任何错误。如果不能加载文件,只能从方法中得到nil指针,而不能确定出现了何种错误。