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