如何遍历NSArray对象并创建一个包含原始子集的新NSArray?

时间:2011-02-02 09:19:46

标签: iphone objective-c nsmutablearray nsarray

我正在开发一个基本的iPhone应用程序,它从SQLite表中提取餐馆对象,并在表格中为用户显示它们。我的应用是基于导航的。我从SQLite数据库中提取数据,然后对它们进行排序没有问题。我没有问题。每个餐馆对象具有各种属性,例如“名称”,“地址”,“类别”(即希腊,意大利等餐馆的类型)等。现在,在从数据库中检索记录之后,我能够成功地将它们放入NSMutableArray中,然后将它们排序为NSArray。

我的问题是,使用这个NSArray(或原始的NSMutableArray),我想创建另一个数组,第一个索引包含“All”,然后每个剩余的索引包含来自的餐厅类别的唯一名称原始列表,按字母顺序排序,然后在下一个屏幕上将其作为表格呈现给用户。从该表中,如果用户选择“全部”,则用户将被带到显示另一个表格的另一个屏幕,在那里他们可以看到所有餐馆,无论其类型如何。

然而,如果用户从可用列表中选择特定类别,则用户将被带到显示仅由那种类型的餐馆组成的表的屏幕(例如,仅意大利餐馆,仅中国餐馆,仅泰国餐馆) )。我该怎么做呢?有什么想法或建议吗?

1 个答案:

答案 0 :(得分:0)

一种可能的算法大纲:

  1. 迭代您的NSMutableArray(例如for(item in array))将每个项目的类别属性插入NSMutableSet(或NSCountedSet,如果您还想要每个类别的次数发生时)
  2. 使用NSSet sortedArrayUsingDescriptors:方法获取已排序的类别数组。
  3. 以适合
  4. 的方式添加所有条目