Utility App и plist - это подходящий подход к созданию приложения в стиле флэшкарты?

Я пытаюсь интегрировать раздел вопросов / ответов в одно из моих приложений.

Я хотел использовать приложение в стиле Utility, где вопрос загружается как Uilable в первом представлении, а ответ загружается в flippedview.

Я надеялся загрузить данные о вопросе и ответе из списка и добавить опцию случайного перемешивания, чтобы вопросы можно было перепутать.

Подходит ли здесь метод plist? Кто-нибудь имеет опыт создания такого рода приложений? Есть ли примеры в Интернете / в книгах, где я мог бы увидеть исходный код?

Ваша помощь очень ценится.

J


Обновить:

ОК - я пытался сделать эту работу.

Вот мой список (DataDetail1.plist):

Root...............................(Array)
........Item 0.....................(Dictionary)
.................Question..........(string)  ///Question text////
.................Answer............(string) ///Answer text/////
........Item 2.....................(Dictionary)
.................Question..........(strings) //Question text////
.................Answer............(strings) //Answer text/////

Я думал, что мог бы объявить plist как NSarray:

- (void)viewDidLoad {
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"DataDetail1" ofType:@"plist"]; //Defines path for DATA For ARRAY//
NSArray* tmpArray = [[NSArray alloc] 
                            initWithContentsOfFile:path]; //initialises the contents of the ARRAY with the PLIST"
self.DataList1 = tmpArray; 
[tmpArray release];

Затем назначьте ключ для UILable в первом представлении;

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
Label1.text = [DataList1 objectForKey:Question_KEY];

Именно в этот момент я столкнулся с проблемой - я не могу использовать метод objectForKey с NSArray.

Как мне заставить это работать?

J

п.с.

как только это сработает, какой код мне понадобится, чтобы заставить flippedView загружать клавишу "Ответ" из данного элемента в Plist?

1 ответ

Решение

Вы можете использовать plist для хранения чего угодно, но проблема в том, что они не масштабируются. Вы должны загрузить весь plist сразу и создать экземпляр всех объектов, которые сериализует plist. Это нормально для нескольких небольших объектов, но очень быстро пожирает вашу память и становится сложным в управлении по мере роста количества, размера и сложности объектов.

Если каждый файл представляет собой всего несколько десятков карточек с текстовыми вопросами и ответом на каждую, то plist, вероятно, будет работать нормально. Когда вы наберете большее количество карт и / или начнете добавлять графику, это сломается.

Редактировать:

Это:

Label1.text = [DataList1 objectForKey:Question_KEY];

... не будет работать. objectForKey: это метод NSDictionary, а не NSArray. Вы должны получить словарь по определенному индексу массива и отправить, что objectForKey:сообщение.. Вам нужно что-то вроде:

Label1.text = [[DataList1 objectAtIndex:1] objectForKey:Question_KEY];
Другие вопросы по тегам