我正在开发一个 iPhone 应用程序,它将从服务器访问 XML 文件(或类似文件)。我想将这些数据转换为 iPhone 上的一个流畅的原生 UI。以我目前的知识,我已经可以通过加载文件、解析它们、编写自定义代码来填充数据结构并将数据转换为用户界面元素来做到这一点。但是,由于我知道这是 iPhone 开发中的常见问题,我倾向于认为有一种更简单的方法可以抽象出一些过程。
在不重新发明轮子的情况下编写混合应用程序的最佳和最合适的方法是什么?
我正在开发一个 iPhone 应用程序,它将从服务器访问 XML 文件(或类似文件)。我想将这些数据转换为 iPhone 上的一个流畅的原生 UI。以我目前的知识,我已经可以通过加载文件、解析它们、编写自定义代码来填充数据结构并将数据转换为用户界面元素来做到这一点。但是,由于我知道这是 iPhone 开发中的常见问题,我倾向于认为有一种更简单的方法可以抽象出一些过程。
在不重新发明轮子的情况下编写混合应用程序的最佳和最合适的方法是什么?
有一些现成的抽象,但大多数都专注于 XMLRPC,这往往有点笨拙。
你最好的选择可能是写一个NSXMLParserDelegate
,这很简单;然后只需使用-initWithContentsOfURL:
. 使用这种方法,加载 XML 文件并解析它们成为一个步骤;并且您可以随时创建数据结构。使用通常的抽象机制(数据源和委托)转换为 UI 元素。
这使您摆脱了外部强加的 XML Schema 的约束,但它表明您的 XML 文件相对轻量级,或者可能存在(显着)接口滞后。在单独的线程上加载 XML 并在更多数据可用时重新加载您的界面是明智的(但不是太频繁),尤其是当文件超过几个 KiB 时。
编辑:一些注意事项:总的来说,如果您正在做任何甚至远程复杂的事情,您都希望避免使用 UIWebView。它不如本机控件快,结果应用程序的外观和感觉通常只是有点偏离。
此外,在我看来,您想要的或多或少是一个XML-file => UITableView
类型应用程序,或者至少是概念上相似的东西。这真的很容易构建;最棘手的部分是找出一个包含您想要的信息而又不会变得臃肿的 XML 格式。事实上,我建议你从那里开始;只是一个 XML 消费者和一个导航控制器;使用它作为起点应该可以让您检查您的结构是否健全并且文件是否太大;这给我们带来了使用 UIWebView 的另一个问题:
您无法控制缓存,尤其是当您使用 JS 处理或获取文件时。这对于大多数 Web 浏览来说都很好,WebKit通常会做正确的事情,尤其是在面对健全的 Web 服务器配置时(嗯,不是实际的配置,而是配置的实际结果:健全的标头)。
当您使用定制的解析器和缓存系统时,您有更大程度的控制,并且您可以使用许多技巧来确保您下载的内容永远不会超过您严格意义上的需要。