Я создал файл plist, который выглядит так:
Из этого я могу извлечь всю информацию о plist в NSArray:
-(NSArray *)Topics
{
if(!_Topics)
{
_Topics = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"TopicData" ofType:@"plist"]];
}
return _Topics;
}
И используйте этот массив для загрузки таблицы TopicTitle:
cell.textLabel.text = [[self.Topics objectAtIndex:indexPath.row] valueForKey:@"TopicTitle"];
Когда строка в таблице выбрана, я передаю словарь с именем «Вопросы» следующему ViewController следующим образом:
NSDictionary *questions = [[self.Topics objectAtIndex:indexPath.row] valueForKey:@"Questions"];
[self.detailViewController setQuestions:(questions)];
Отсюда я хочу перебрать каждый словарь «Вопрос» и загрузить строки «QuestionText» и «AnswerOne/Two...» в массив объектов, выполнив что-то вроде этого:
TopicQuestions = [NSMutableArray array];
for(NSDictionary *ques in self.Questions)
{
Question* q = [[Question alloc] init];
q.Question = (NSString*)[ques objectForKey:@"QuestionText"];
q.AnswerOne = (NSString*)[ques objectForKey:@"QuestionText"];
q.AnswerTwo = (NSString*)[ques objectForKey:@"QuestionText"];
q.AnswerThree = (NSString*)[ques objectForKey:@"QuestionText"];
q.AnswerFour = (NSString*)[ques objectForKey:@"QuestionText"];
[TopicQuestions addObject:q];
}
Но словарь «Вопросы», похоже, не имеет этих данных, он знает, что есть 4 дочерних объекта, но не имеет всех значений пары ключей этих объектов:
Итак, мой вопрос заключается в том, как мне передать словарь «Вопросы» следующему ViewController, чтобы я по-прежнему мог получить доступ к узлам «QuestionText» и «AnswerOne/Two...»?
Или есть лучший способ чтения строк без перебора каждого словаря «Вопрос»?
objectForKey:
. ИспользуйтеvalueForKey:
только тогда, когда вам действительно нужно использовать функции кодирования ключ-значение. 29.01.2014