2013-04-04 30 views
3

我正在創建一個由幾個UITableViewControllers組成的簡單iOS應用程序。顯示在視圖控制器中的信息將來自xml文件(我將包含在項目的資源中或直接從保存箱或iCloud中包含)。 xml文件的內容將基於用戶輸入。從iphone中的核心數據生成和解析XML

幾點說明:

這些數據是基於用戶輸入手段而非靜態的。理想情況下,應用程序會將數據從xml文件加載到「Core Data」中。 每次額外的應用程序運行只會從某些核心數據源(我還不完全熟悉)中取出數據,而不是從文本文件重新加載數據。

現在我使用的XmlWriter生成簡單的XML文件

請指引我 謝謝

+0

Ÿ做ü需要在本地生成XML,如u說ü會收到來自服務器/雲..ü需要只解析收到的XML和保存到數據庫,只是查詢使用coredata&分貝在tableview中顯示.. – vishy 2013-04-04 05:15:05

+0

@vishy,因爲首先我需要基於用戶輸入編程生成xml,然後我將它發送到服務器 – 2013-04-04 05:20:42

+0

爲服務器請求生成xml它會很容易,只需使用格式化的'NSString '方法,因爲所有的xml節點都是靜態的.. – vishy 2013-04-04 05:24:28

回答

2

這裏最好的模式似乎是使用XML文件中的「種子」的核心數據的數據庫。這隻發生在第一次。之後,您將永遠不會再使用您的XML文件,只需更新並同步您的核心數據存儲。

這比生成XML要好得多。 XML文件(如屬性列表)的問題是您必須爲每個小的增量更改編寫整個文件。如果你在網上某個地方同步到商店,這可能需要太多時間才能實用。

假設您可以從XML文件獲取基礎對象,只需遍歷該對象並逐個插入Core Data。

for (NSDictionary *dict in xmlArray) { 
    Entity *newObject = [NSEntityDescription 
     insertNewObjectForEntityForName:@"Entity" 
       inManagedObjectContext:self.managedObjectContext]; 
    newObject.attribute1 = [dict objectForKey:@"attribute1"]; 
    newObject.attribute2 = [dict objectForKey:@"attribute2"]; 
    // etc... 
} 
[self.managedObjectContext save:nil]; 
+0

請詳細說明您的答案,因爲我是核心數據的初學者,對我來說它有點複雜 – 2013-04-04 07:15:35

+0

您知道如何從XML文件中獲取對象嗎? – Mundi 2013-04-04 07:21:06

+0

是的,我知道,我試圖獲得所有的對象,並使其字符串 – 2013-04-04 07:22:19