代码之家  ›  专栏  ›  技术社区  ›  anon

RESTful iPhone客户端和模型层次结构

  •  0
  • anon  · 技术社区  · 15 年前

    我很好奇你们中的大多数人都在采用什么策略来构建可靠的、可休息的iPhone客户机,以建立模型层次结构。我所说的模型层次结构是指我有一个REST服务器,其中有几个资源相互关联。例如,假设我有一个REST服务器,它可以输出关于学校的信息。如果我想抓住某一特定班级的所有学生,我首先需要查询REST服务器以获取有关该学校的信息,然后需要查询服务器以获取该学校必须提供的所有班级的信息,然后是对特定班级的所有学生的后续请求。最后,客户机将引入3个独特的XML树。在这一点上,你们中的大多数人是否编写了自己的算法来构建最终的树,最终成为你们的数据源?在这方面,您不聚合XML树,而是使用不同的方法吗?

    您希望如何在服务器上获取大量相关资源,并将它们放到一个对客户机有意义的树中?

    谢谢你的洞察力。

    4 回复  |  直到 15 年前
        1
  •  2
  •   danielpunkass    15 年前

    如何选择在iPhone上存储管理您的模型数据,可能取决于您所处理的XML数据可能会有多大的变化,以及它可能会变得多么膨胀。

    如果这是一个不太可能改变的简单XML模型,并且不包含太多多余的信息,那么最好只使用您描述的XML树。

    但是对于任何更复杂的事情,我更喜欢将XML表示转换成一种最容易被目标C代码操纵的格式。例如,考虑应用程序有一天会扩展以支持其他基于Web的服务,这些服务提供类似的数据,但作为JSON或SOAP格式的数据。现在,您开始遇到在应用程序中维护3种不同类型的模型的难题,这时最好只维护一种模型。

    我会将基于XML的REST资源视为“外来数据”,需要将其转换为本地可操作的格式。如果您采用的本地格式最大限度地简化了应用程序特定的操作,那么您可以调整任何其他外来格式的输入,并根据上传/编辑/任何内容的需要转换回外来格式。

    丹尼尔

        2
  •  2
  •   keremk    15 年前

    有一个项目叫 IPhone on Rails 在那里,他们创建了一个目标C实现 ActiveResource . 我还没有机会玩它,但它可能值得一看。

        3
  •  0
  •   slf    15 年前

    我目前正致力于一个项目来解决这个问题,我们将在代码达到稳定点时释放它。

    如果没有一个标准化的系统来序列化从服务器返回的所有对象,这是一个非常棘手的问题。幸运的是,在这个项目中,我们确实有一个通用的序列化机制,因此我们构建了一个抽象的SAX解析器,我们从中继承并使用它。 type introspection NSCoding 以弥合Objective-C和XML之间的差距。你可以自己做一个类似的概念。

    在这个项目之前,我只是构建/重用了几个类来处理 NSURLConnection NSXMLParser 工作,但不是类型内省,我使用 Delegation Pattern .

        4
  •  0
  •   Alex Reynolds    15 年前

    就我自己而言,我一直在用包装纸 ASIHTTPRequest 以构建RESTful查询。我一直在处理结果 libxml2 ,直接解析为呈现到用户界面中的模型对象。

    我不确定我是否为您提供了一个Catchall解决方案,但我认为将功能分离为不同的、可重用的方法会使您获益匪浅。这样,您就不必太担心返回的XML树的数量。您只需对您拥有的内容发出查询,以填充您的界面。