Создание классов в реальном времени? - PullRequest
0 голосов
/ 21 марта 2011

Я создаю игру на совпадение в Objective-C и пытаюсь найти способ сохранить значения массива после их перетасовки.

Три различных массива заполняются из файлов 'plist', соответствующие элементы которых соответствуют друг другу (т. Е. N-й элемент в первом массиве совпадает с n-м элементом во втором и третьем массивах).
Массивы затем перетасовываются и отображаются. Однако в процессе перетасовки я теряю способность находить совпадение между элементами, потому что они теперь расположены в случайном порядке.

Решение этой проблемы можно найти на этой странице . Пользователь "chrisL" предлагает создать класс для каждого вопроса / ответа. Это разумное решение, однако мне нужно сделать эту игру гибкой, чтобы кто-то мог добавить столько подходящих элементов, сколько пожелает, не касаясь какого-либо кода.
Я чувствую, что единственный способ сделать это - определить количество подходящих элементов и создать для них классы в режиме реального времени, но это звучит как непрактичность программирования.
Может кто-нибудь застрелить меня, чтобы обойти эту проблему?

1 Ответ

2 голосов
/ 21 марта 2011

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

  1. Ваш список вопросов «сплющен» и просто условенгарантирует, что каждая группа из 6 смежных предметов соответствует вопросу.Вместо этого создайте массив вопросов (где каждый вопрос представляет собой массив элементов вопроса), а затем вы можете перетасовать внешний массив, не беспокоясь.

    [Q1, a1, b1, c1, Q2, a2, c2] --> [[Q1, a1, b1, c1], [Q2, a2, b2, c2]]
    
  2. СледующийДело в том, что использование массива для представления вопроса в соответствии с соглашением, что первый элемент является текстом вопроса, а следующий элемент является опцией, является плохой практикой программирования.Вместо использования этого представления создайте класс Question, а затем создайте экземпляр объекта Question для заполнения списка вопросов.Этот объектно-ориентированный подход дает 2 основных преимущества:

    • Вы можете использовать собственные имена и методы при доступе к вопросам вместо специальных индексов.
    • Становится проще добавлять разныеВиды вопросов последнего на.
...