Списки действительно полезны во многих случаях:
+ (NSMutableDictionary*) containerDictionary {
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"ContainerGraphics.plist"];
NSMutableDictionary *plistData = [NSMutableDictionary dictionaryWithContentsOfFile:finalPath];
return plistData;
}
Это загружает файл plist (список свойств) с именем "ContainerGraphics.plist" из пакета моих приложений.
Файл plistна самом деле просто файл XML.Вы можете создать его в XCode, выбрав «новый файл» -> «ресурс» -> «Список свойств».
Вы действительно не говорите, что вы не понимаете, так что если есть что-тоКонкретное, что вам трудно понять, пожалуйста, уточните:)
РЕДАКТИРОВАТЬ:
С размещенным вами списком рассылки используйте мой подход, описанный выше, чтобы «загрузить» файл списков рассылки.Тогда это NSDictionary NSDictionaries ..
Итак, чтобы перейти к словарю "Apple", вы идете:
NSDictionary *appleDictionary = [plistData objectForKey:@"Apple"];
Что означает что-то вместе - перейдите в список и получите "Apple""словарь.
Теперь, чтобы получить значения изображения и описания, вы бы пошли:
NSString *imagePath = [appleDictionary objectForKey:@"image"];
NSString *descriptionString = [appleDictionary objectForKey:@"description"];
Это в значительной степени то, что есть.
Если у вас есть tableView, который должен быть заполнен этими данными, есть ловушка!Данные внутри NSDictionary не имеют порядка.Так что вы не можете просто ссылаться на [словарь objectAtIndex: indexPath.row], как если бы вы делали это с массивом данных для tableView.
Затем вы сначала получаете plistData, как в моем первом примере.,(сделать это в viewDidLoad).Затем вы извлекаете все ключи из словаря plistData - обратите внимание, что «верхний словарь специфичен», Apple, «Orange» и т. Д., А не значения, которые вы хотите жестко закодировать в своем приложении.Но словари внутри этих словарей являются общими, изображение, описание…
Итак:
NSArray *allKeys = [plistData allKeys];
массив allKey теперь содержит ключи (Apple, Orange и т. Д.) Для доступа к NSDictionariesв plistData.
В методе cellForRowAtIndexPath вы можете перейти:
NSDictionary *dictionaryForCurrentCell = [plistData objectForKey:[allKeys objectAtIndex:indexPath.row]];
[cell.textLabel setText:[dictionaryForCurrentCell objectForKey:@"image"]];
[cell.detailLabel setText:[dictionaryForCurrentCell objectForKey:@"description"]];
Надеюсь, это поможет:)