iPhone - заполнение массива содержимым сжатого файла plist - PullRequest
1 голос
/ 19 сентября 2011

Допустим, у меня есть файл plist, и я хочу сжать его.У меня есть метод, который загружает этот сжатый файл, распаковывает его и помещает результат в строку NSString.

Как мне преобразовать этот NSString в массив так просто, как это можно сделать с этими строками, когда plist не сжат:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"plist"];
NSArray* arrayOfDatas = [NSArray arrayWithContentsOfFile:filePath];

1 Ответ

2 голосов
/ 19 сентября 2011

Считайте файл в NSData, затем используйте:

+ (id)propertyListWithData:(NSData *)data options:(NSPropertyListReadOptions)opt format:(NSPropertyListFormat *)format error:(NSError **)error

, где NSPropertyListFormat равно NSPropertyListBinaryFormat_v1_0

Создание в NSData для записи:

+ (NSData *)dataWithPropertyList:(id)plist format:(NSPropertyListFormat)format options:(NSPropertyListWriteOptions)opt error:(NSError **)error

Пример (не тестировался):

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"plist"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSError *error;
NSArray* plist = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:NULL error:&error];

NSData *propertyListSerializedData = [NSPropertyListSerialization dataWithPropertyList:plist format:NSPropertyListBinaryFormat_v1_0 options:0 error:&error];
[propertyListSerializedData writeToFile:filePath atomically:YES];
...