2011-11-25 74 views
1

我有一个应用程序从我无法控制的来源获取数据(XML)。这意味着源代码可以随时更改XML标签,这会使我的应用程序无用(甚至可能导致应用程序崩溃)。Objective-C - 在应用程序中使用在线常量

如果源代码更改XML标记,我不想更改应用程序中的代码,并且只是因为更改了XML标记而必须发送更新的应用程序。这意味着会有很多用户没有升级到新的应用程序并错过了功能。

所以我的问题基本上是如果可以在URL中定义XML标记,应用程序每次需要解析XML标记时都会执行查找。

回答

0

我有一个类似的问题,当刮一些HTML页面。我的解决方案是在解析信息时在我的服务器上创建一个文件,我可以更新该文件,因为我正在修改该网站。在我的情况下,它在文件中有正则表达式,你可以有XML标签。每次启动应用程序时我都会下载此文件,它采用二进制plist格式,访问速度合理。

我用plist编辑器创建了xml文件,将其保存为二进制格式并将其FTP到我的服务器。我所做的顶级元素的字典,并加载它:

+ (id)dictionaryWithContentsOfURL:(NSURL *)aURL 

我认为有一个终端命令转换文本二进制的plist:

plutil -convert binary1 some_other_file.plist 

苹果用于提供“属性列表编辑器”作为Xcode的一部分,但他们再也没有 - 坏苹果。还有其他plist编辑器,如“PlistEdit Pro”,它倾向于保存为XML,ASCII,JSON或二进制。

+0

你能告诉我一些关于如何创建plist文件的示例代码,以及如何从应用程序代码中访问它?也许修改为XML标签? –

+0

谢谢!所以当你想从你的plist中获得一个值时:'NSDictionary * dict = [NSDictionary dictionaryWithContentsOfURL:URL]; NSString * xmlTag = [dict objectForKey:@“xmlTag”];'?将plist转换为二进制格式的含义是什么? –

+0

是的。二进制plist的加载时间显着更快。 – zaph

相关问题