归档
概念:在Objective-c术语中,归档是指用某种格式来保存一个对象,以便以后还原这些对象的过程。通常这个过程包括将(多个)对象写入文件中,以便以后读回该对象。
两种归档数据的方法:属性列表和带键值的编码。
一、使用XML属性列表进行归档1、XML属性列表:MAC OS X上的应用程序使用XML属性列表(或plists)束来存储诸如默认参数选择,应用程序设置和配置信息这样的数据。
注:
1>、:这些列表的归档用途是有限的,因为当为某个数据结构创建属性列表时,没有保存特定的对象类,没有存储对同一对象的多个引用,也没有保持对象的可变性。
2>、属性列表归档只针对于Foundation对象
2、将数据以XML格式写出:当你的对象是NSString、NSDictionary、NSArray、NSData或NSNumber对象,你可以使用在这些类中实现的writeToFile: atomically: 方法将数据写到文件中。
3、将XML属性列表读入程序:使用dictionaryWithContentsOfFile: 或arrayWithContentsOfFile:方法。
注:读回数据使用dataWithContentsOfFile: 方法,要读回字符串对象,使用stringWithContentsOfFile; 方法。
4、例--
#import <Foundation/NSObject.h>#import <Foundation/NSAutoreleasePool.h>#import <Foundation/NSString.h>#import <Foundation/NSKeyedArchiver.h>#import <Foundation/NSArray.h>int main (int argc, char *argv[]){NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];NSData *data;NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString: @"one"],[NSMutableString stringWithString: @"two"],[NSMutableString stringWithString: @"three"],nil]; NSMutableArray *dataArray2;NSMutableString *mStr;// Make a deep copy using the archiverdata = [NSKeyedArchiver archivedDataWithRootObject: dataArray];dataArray2 = [NSKeyedUnarchiver unarchiveObjectWithData: data]; mStr = [dataArray2 objectAtIndex: 0];[mStr appendString: @"ONE"];NSLog (@"dataArray: ");for ( NSString *elem in dataArray )NSLog ("%@", elem);NSLog (@"\ndataArray2: ");for ( NSString *elem in dataArray2 )NSLog ("%@", elem);[pool drain];return 0;}