Передача информации PList в строку, а затем в изменяемый массив (iOS) - PullRequest
0 голосов
/ 28 ноября 2011

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

Код выглядит следующим образом:

NSString *myfile = [[NSBundle mainBundle] pathForResource:@"MyDeals" ofType:@"plist"];
NSLog(@"%@", myfile);
NSMutableArray *myArray = [[NSMutableArray alloc] initWithContentsOfFile:myfile];
NSLog(@"%@", myArray);
self.dealsArray = myArray;
[myArray release];

Первый NSLog регистрирует правильный путь для файла plist, поэтому он работает до тех пор, но затем второй журнал возвращает '(null)', так что myArray фактически не получает информацию из myfile по какой-то причине. Есть идеи? Спасибо!

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Попробуйте сначала загрузить файл в NSData, чтобы понять, в чем проблема.

NSError *error;
NSData *data = [NSData dataWithContentsOfFile:myfile options:0 error:&error];
if (!data) {
    NSLog(@"error loading plist from %@: %@", myfile, error);
    return;
}
self.dealsArray = [NSPropertyListSerialization propertyListWithData:data
    options:NSPropertyListMutableContainers format:NULL error:&error];
if (!self.dealsArray) {
    NSLog(@"error parsing plist from %@: %@", myfile, error);
    return;
}
0 голосов
/ 28 ноября 2011

Я могу ошибаться, но я считаю, что plist должен быть десериализован как словарь, а не как массив, даже если корневой элемент является массивом. Если вы хотите десериализовать массив из файла, вероятно, это должен быть файл, созданный из NSArray writeToFileAtmoically.

...