2011-01-22 49 views
1

我很抱歉問這樣一個noob問題。我知道通過數據庫在iphone上存儲數據的一種方法是使用SQLite,但在閱讀了一段時間後,似乎數據庫是本地的,因此每個應用程序都有一個數據庫副本?這是正確的嗎?如果是這種情況,那麼如果我有兩個iPod使用相同的應用程序。而ipod A想更新數據庫,那麼數據不會反映在ipod B上?對不起noob問題SQLite和iphone

+0

是的。你是對的。 「每個應用都有自己的資源和資產副本」。 iPod A中的數據庫沒有機會與iPod B中的數據庫建立關係,除了使用網絡服務。 – EmptyStack 2011-01-22 07:27:02

+0

那麼有沒有辦法在服務器中擁有一個集中的數據庫並將iPhone連接到它? – aherlambang 2011-01-22 07:29:40

回答

1

你通過一個可以同步應用程序之間的數據的服務器來解決這個問題。這其實是一個比你想象的要大得多的問題。在sonatribe.com中,我們必須考慮用戶沒有連接到互聯網的情況 - 所以我們排隊用戶操作,然後在設備連接時將數據推送到服務器。那麼你必須考慮哪個數據庫是優先的?哪一個在衝突時寫另一個。

我們還定期發佈新事件的新數據 - 然後在啓動應用程序時同步這些數據。

我們學到的一個教訓是,最好保持通話的次數 - 連接費用很高 - 但一旦連接,數據流就會很快。

FWIW - 我們使用MonoTouch - 主要原因是與WCF的集成和.NET的數據功能(LINQ)。通過使用SIlverlight配置文件和svcutil,可以很容易地與Web服務進行連接和通信,並通過網絡傳遞複雜的對象 - 這非常方便。

您還需要考慮有限數據合同上的用戶。我們有能力在設置中關閉與服務器的自動同步。這對我們的用戶真正參加音樂節時也很有用 - 在英國,由於一個空間的人數龐大,接待處因這類事件不佳而聞名。雖然這種情況正在改善,但用戶會意識到他們可以停止應用程序與其服務器通信。