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];