用于分类项目的Objective-C数据结构

时间:2016-06-12 23:54:39

标签: objective-c data-structures

我是objective-c的新手,我正在寻找一个好的数据结构来允许对项目进行分类。我们想说我想对食物种类进行分类。类别是肉类,水果和蔬菜。当用户输入" apple"那时我想知道苹果属于水果类。此外,这些类别需要是可变的。因此,如果用户输入未知食物,那么他们可以将其分配到一个类别,并且类别将被更新以记住这种新类型的食物。

我看过使用NSMutableArray。我的想法是,我会为每类食物制作一个阵列,阵列的元素将是属于该类别的所有食物。然后我会搜索每个数组,直到找到匹配为止。

这些类别不会太大(每个项目大约5,000个项目),但足够大,我希望对它们进行排序并考虑其他因素以便快速搜索。

有什么好的数据结构可以解决这个问题?

1 个答案:

答案 0 :(得分:2)

Objective-C提供了3个数据结构,可用于您的目的,NSArrayNSSetNSDictionary。这些也有可变的味道,NSSet也提供了可以管理排序的NSOrderedSet子类。

您应该使用的内容取决于您将主要针对您的数据执行哪种操作:

  • 如果您计划为每个元素分配多个类别,则每个食物实例可以有一个NSMutableSet成员。
  • 您可以拥有NSMutableArrayNSMutableSet个实例,每个类别一个,并将食物添加到特定NSMutableSet
  • 你可以有NSMutableDictionary将每种食物映射到其类别

但仍然取决于你是否需要在一个方向或另一个方向快速查找。只需考虑NSSetNSDictionary提供快速查找(这样就可以有效地检查某个元素是否包含在NSSet中,或者将值映射到特定的键一个NSDictionary