2013-03-08 99 views
6

我有一個應用程序,需要互聯網同步到本地核心數據庫的web服務。然後使用本地數據庫提取爲Tabbar控制器中的MapView和TableView填充不同的對象。林看着這些情景2:什麼是這個iOS應用程序最有效的工作流程?

AppFlowLogic

「A」的主要優點是,我沒有與數據庫進行預加載應用程序,雖然它小分貝(約100條記錄)。問題是它變得複雜。如果沒有互聯網連接,在MapView中,用戶將看到一個地圖,但refreshButton被禁用。所以這不是問題。但用戶仍然可以訪問桌面視圖,他會看到一個空表。

「B」的主要優點是,使用預加載的數據庫,應用程序將始終有一個數據源可供繪圖和列表。我真的不知道如何用db預裝應用程序。

我有點想去第一條路線,「A」。我的主要問題是,因爲現在我禁用了MapView上的refreshButton,所以只有當數據從網上獲取時,它纔會起作用...那個sortedArray在啓動時是空的。所以如果用戶轉到TableVC,它將是空的。按照現狀,用戶必須先點擊刷新按鈕才能進入桌面視圖。

什麼是最有效的方法來處理這個問題?

+0

+1很好的解釋。 – Dilip 2013-03-08 15:09:41

+0

邊緣情況下,它們是很難編碼的,但它們對於用戶體驗非常重要。我認爲「A」是你最好的選擇(我的意見)。如果你沒有初始數據+沒有連接,你可以用「你需要下載數據,獲得互聯網連接」來阻止整個應用程序的使用。您可以編寫代碼來處理用戶在沒有數據時可以訪問的每個屏幕上的「無數據」場景。大多數表格都包含一個「無數據」的情況,它會添加一條通知用戶的行。最好的答案取決於您的使用情況和要求,通常偏向於個人偏好。 – DBD 2013-03-08 15:11:48

+0

感謝Dilip,我真的希望有一個xcode模塊來處理邏輯,根據你的代碼向你展示它是什麼,因爲我非常直觀。 DBD,儘管我應該學習如何編寫第一個啓動場景等,但我認爲用戶應該連接到互聯網。林不知道阻止整個應用程序,但至少「沒有數據」的情況。雖然,這與阻止整個應用程序本質上是相同的,因爲他們除了shell外不會看到任何東西。再用UX來說,讓他們看到一些東西更好。所以我難過:(我想我需要去艱難的路線 – marciokoko 2013-03-08 15:39:23

回答

2

如果100條記錄足夠靜態,您可以通過該應用程序發送一組默認記錄,那將是最佳解決方案。無論有沒有互聯網的用戶都可以獲得填充的桌面視圖。

將您的記錄作爲plist發送到您的應用程序包中。首次啓動時,打開plist並將每個條目作爲新對象添加到核心數據中。這種「播種」發生得非常快。只需爲plist創建一個集合(數組,字典),然後枚舉,將其映射到managedObject的屬性。

有代碼顯示如何在WWDC 2012視頻iCloud和Core Data中完成此操作(忽略iCloud部分)。

然後,如果播種後有連接,則可以同步數據,這會更新/替換預填充的數據等。

+0

好的感謝預加載的數據,記錄基本上是商店的位置,大約每個月都會添加一條新記錄 – marciokoko 2013-03-08 15:34:48

+0

所以我無法使用預裝的Core Data數據庫發貨? – marciokoko 2013-03-08 15:43:47

+0

不需要。核心數據爲sqlite數據庫添加了一堆表格和關係,以及各種特殊的事情,只有當您真正通過核心數據在您的應用中完成核心數據時才能完成此操作。小心任何博客文章,否則顯示你!但別擔心,播種不會像你想象的那麼糟糕。 – 2013-03-08 15:50:38

相關問題