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