Итак, я хочу знать, хорошая это идея или плохая.
Я создаю простую игру для iOS (с использованием стандартных элементов управления пользовательского интерфейса), которая позволяет пользователю создавать персонажей и монстров "Шаблоны ", затем создайте Encounters, который ссылается на Персонажей и Монстров и взаимодействует с ними.
Когда пользователь создает встречу, существует простое Модальное Представление, которое позволяет ему назвать встречу, а затем нажать на другой VC, чтобы выбратьучаствующие персонажи, вернитесь назад, нажмите на второй контроллер вида, чтобы выбрать вовлеченные Шаблоны Монстров, а также сколько из этих монстров будут участвовать.
Цель, в конце концов, - получить МонстраШаблоны будут использоваться для создания «настоящих» монстров, которые будут ссылками в Encounter.
Sample Encounter
Player Characters
Ramza Beoulve
Delita Hiral
Monsters
Orc 1
Orc 2
Orc 3
Для фрагмента выбора персонажа я использовал NSSet для хранения выбранных объектов персонажей и передачи их между контроллерами представления.(Таким образом, мне не нужно много возиться с контекстом управляемого объекта до фактического сохранения новой встречи)
Для монстров, так как мне нужно хранить количество и сущность, это немного большесложный.
Поэтому моя первоначальная мысль заключалась в том, чтобы сохранить их в NSArray NSDictionaries, который, в свою очередь, содержит шаблон монстров и количество.NSArray и откройте каждый отдельный словарь, чтобы проверить, существует ли конкретный шаблон монстра или нет.
Это может не иметь большого значения в этом масштабе приложения, но это кажется неэффективным.
Поэтому я подумал, что вместо этогоможет быть, лучше просто поддерживать два NSMutable Arrays
NSMutableArray *selectedMonsterTemplates;
NSMutableArray *selectedMonsterTemplateQuantities;
Таким образом, я могу просто позвонить
[selectedMonsterTemplates containsObject:monsterTemplate];
, когда мне нужно проверить, что-то там уже есть, и когда я добавляю иливычтя количество для конкретного монстра, я могу просто обновить оба массива.
Затем, когда встречаПосле сохранения я могу просто перебрать массив, чтобы создать отдельные экземпляры монстров в желаемом количестве и связать их с Encounter.
Я обеспокоен тем, что этот подход, хотя и простой и эффективный, может привести кпроблемы параллелизма, если в коде есть небольшая ошибка.Есть ли лучший способ сделать это?