2011-11-25 75 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

相關問題