黑马程序员--Object-C文件加载与保存

来源:互联网 发布:linux web服务器配置 编辑:程序博客网 时间:2024/05/22 11:00

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指针,而不能确定出现了何种错误。


0 0