所以我想知道这是个好主意还是坏主意。
我正在构建一个简单的 iOS 游戏(使用标准 UI 控件),它允许用户创建角色和怪物“模板”,然后构建引用角色和怪物并与它们交互的遭遇。
当用户创建一个遭遇时,有一个简单的模态视图允许他们命名遭遇,然后推送到另一个 VC 以选择参与的角色,返回,推送到第二个视图控制器以选择涉及的怪物模板,以及至于有多少怪物将参与其中。
最后,目标是让怪物模板用于构建“真实”的怪物,这些怪物将在遭遇中被引用。
Sample Encounter
Player Characters
Ramza Beoulve
Delita Hiral
Monsters
Orc 1
Orc 2
Orc 3
对于角色选择部分,我使用了一个 NSSet 来存储选择的角色实体并在视图控制器之间传递它。(这样我避免在实际保存新的遭遇之前不得不非常混乱的托管对象上下文)
对于怪物,因为我需要存储一个数量以及实体,所以它有点复杂。
所以我最初的想法是将它们存储在 NSDictionaries 的 NSArray 中,其中包含 Monster Template 和 Quantity。
这种方法的问题是我必须遍历 NSArray 并打开每个单独的字典来检查是否存在特定的怪物模板。
在这种规模的应用程序中,它可能并不重要,但它似乎效率低下。
所以我认为最好只维护两个 NSMutable 数组
NSMutableArray *selectedMonsterTemplates;
NSMutableArray *selectedMonsterTemplateQuantities;
这样我可以简单地打电话
[selectedMonsterTemplates containsObject:monsterTemplate];
当我需要检查其中是否已经存在某些东西时,并且当我为特定怪物添加或减去数量时,我可以简单地更新两个数组。
然后,当 Encounter 被保存时,我可以简单地遍历 Array 一次以创建所需数量的个人怪物实例,并将它们与 Encounter 相关联。
我担心这种方法虽然简单有效,但如果代码中出现小错误,可能会导致并发问题。有没有更好的方法来解决这个问题?