Foundation 框架提供了 NSPropertyListSerialization
類處理plist文件
//從文件讀入數據到NSMutableArray
- (NSMutableArray *) readFromArray:(NSString *) path
{
NSMutableData *data = [[NSMutableData alloc] initWithContentsOfFile:path];
NSMutableArray *array = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListMutableContainersAndLeaves format:NULL error:NULL];
return array;
}
//寫入NSMutableArray 到文件
- (void) write:(NSMutableArray *) array toFilePath:(NSString *) path
{
NSData *data = [NSPropertyListSerialization dataWithPropertyList:array format:NSPropertyListBinaryFormat_v1_0 options:NSPropertyListMutableContainersAndLeaves error:NULL];
BOOL success = [data writeToFile:path atomically:YES];
if (success == NO)
{
NSLog(@"寫入不成功");
}
}
options
NSPropertyListImmutable 屬性列表包含不可變對象
NSPropertyListMutableContainers 屬性列表父節點是可變的類型,子節點是不可變類型
NSPropertyListMutableContainersAndLeaves 屬性列表父節點和子節點都是可變的類型
format:
NSPropertyListXMLFormat_v1_0 指定屬性列表文件格式爲XML格式,仍然是純文本類型,不會壓縮文件
NSPropertyListBinaryFormat_v1_0 指定屬性列表文件格式爲二進制格式,文件是二進制類型,會壓縮文件
NSPropertyListOpenStepFormat 指定屬性列表文件格式爲ASCII碼格式,對於舊格式的屬性列表文件,不支持寫入操作