2011-11-25 95 views
3

我有一個關於使用數據填充核心數據的基本問題。我正在構建一個應用程序,它將在地圖上顯示ATM。我想將應用程序與預先加載的數據庫一起發送,但爲了讓用戶在啓動應用程序時能夠選擇接收更新。我正在考慮使用屬性列表進行更新。基本上發送所有的ATM的plist,解析plist並填充sqlite。我將在屬性列表文件中有大約7000個條目,每個條目包含5-6個帶短字符串值的鍵。但根據蘋果iOS開發者庫:使用默認數據初始化核心數據

您可以創建一個屬性列表,或者其它一些基於文件的 數據表示-的,並將其存儲爲一個應用程序資源。 當你想使用它時,你必須打開文件並解析 表示來創建管理對象。您不應該在iOS上使用此技術,並且只能在Mac OS X上絕對必需。 解析文件以創建商店會導致不必要的開銷。它是 要更好地脫機創建核心數據存儲並直接在您的應用程序中使用它 。

我還應該發送一個屬性列表,或者想一個替代解決方案來更新應用程序的數據庫?

P.S.我正在考慮使用Rails應用程序來提供更新 - 主要是發送一個plist文件。

回答

1

幾個月前,我幾乎有同樣的問題,做了相當多的搜索,找到一個很好的簡單答案,沒有找到它,並最終在一個自己的解決方案上花費了一點時間我會希望的,但至少在學習理解Core Data方面非常有幫助。

基本上,解決方案是編寫一個小工具,解析我的源數據(對於我來說是一個逗號分隔的文本文件,使用非常方便的'cCSVParse'庫進行解析 - http://michael.stapelberg.de/cCSVParse),並將其插入Core Data Managed Objects然後將其保存爲sqlite持久性存儲。然後,sqlite商店可以隨應用程序一起提供,並在用戶購買更多數據時由用戶上傳。

你可以寫一個從plist(或其他)到應用程序本身的核心數據表示的轉換,但是如果數據剛剛在某些核心數據表單中實時顯示出來,爲什麼不讓它在您將數據發送給用戶之前,開發包會完成繁重的工作,而不是將數據發送到手機並使其完成工作?

+0

我同意你的意見。這是應用程序功能和數據庫特定用法的問題。 – daLizard