什么数据结构最能代表搜索过滤器?

时间:2014-04-09 11:17:23

标签: data-structures

我正在实施原生iOS应用程序,该应用程序提供了使用关键字和多个搜索过滤器(如作者,年份,发布者等)搜索文章的功能。每个搜索过滤器都有多个选项,例如2014,2013和2012年为过滤器,或Academe Research期刊,Annex Publishers和Elmer Press为发布者过滤器。这些选项中的每一个都有一个BOOL,说明是否选择了该选项。我需要一个包装搜索关键字和搜索过滤器的对象,以便我可以将它发送到负责搜索操作的服务器。

我应该使用哪种数据结构来表示包装类中的这些搜索过滤器?

1 个答案:

答案 0 :(得分:1)

想到了像XML这样的东西:

<year>2014</year>
<publisher>Annex Publishers</publisher>

虽然我发现它相当笨重。我可能更喜欢这样的东西:

year=2014|publisher=Annex Publishers

您需要转义字段名称或值中出现的=|,但这很容易。

这可能只是发送过的单个字符串。

就实际数据结构而言,您可以将字段名称映射到值,仅包含选择该选项的条目。或者你可以有一个包含每个字段的指针/引用的类,如果没有选择该选项,则设置为null。


另一个完全不同的考虑因素是使用枚举类型,即将每个可能的值映射到整数,通常会导致使用更少的内存和更快(可能更强大)的代码,具体取决于完成此操作的方式。

您可以按如下方式映射,例如:

Academe Research Journals  0
Annex Publishers           1
Elmer Press                2

然后,您可以发送"Annex Publishers",而不是将publisher作为1发送。

year=2014|publisher=1

字段的多个可能值的扩展可以通过各种方式完成,但这很容易做到:

<year>2014</year>
<year>2013</year>
<publisher>Annex Publishers</publisher>

或者:

year=2014,2013|publisher=Annex Publishers