我正在实现一个原生iOS应用程序,它提供了一个使用关键字和几个搜索过滤器(如作者、年份、出版商等)搜索文章的功能。每个搜索过滤器都有几个选项,如2014、2013和2012用于年份过滤器,或者学术研究期刊、附件出版商和Elmer Press用于出版商过滤器。这些选项中的每一个都有一个BOOL
,说明是否选择了该选项。我需要一个包装搜索关键字和搜索过滤器的对象,以便可以将其发送到负责搜索操作的服务器。
在包装器类中,我应该使用哪种数据结构来表示这些搜索过滤器?
发布于 2014-04-09 23:52:25
我想到了像XML这样的东西:
<year>2014</year>
<publisher>Annex Publishers</publisher>
尽管我发现它相当笨重。我可能更喜欢这样的东西:
year=2014|publisher=Annex Publishers
您需要对出现在字段名称或值中的=
和|
进行转义,但这很容易做到。
这可能只是一个发送过来的字符串。
就实际的数据结构而言,您可以有一个字段名称到值的映射,只包含选中该选项的条目。或者,您可以创建一个包含每个字段的指针/引用的类,如果未选择该选项,则将其设置为null。
另一个完全不同的考虑是使用枚举类型,即将每个可能的值映射到一个整数,通常会导致使用更少的内存和更快(也可能更健壮)的代码,这取决于具体如何做到这一点。
您可以按如下方式对其进行映射,例如:
Academe Research Journals 0
Annex Publishers 1
Elmer Press 2
然后,您可以只发送1
,而不是将"Annex Publishers"
作为publisher
发送。
year=2014|publisher=1
一个字段的多个可能值的扩展可以用不同的方式来完成,但它很容易做到:
<year>2014</year>
<year>2013</year>
<publisher>Annex Publishers</publisher>
或者:
year=2014,2013|publisher=Annex Publishers
https://stackoverflow.com/questions/22960859
复制