1

我想知道如果我應該少依賴項目的應用程序委託來設置我的應用程序 - 或者應該將此類代碼屬於模型的單例類部分?使用應用程序委託來啓動iOS應用程序

例如-let的說,在我的用戶進入第一個視圖之前 - 我需要應用程序從服務器下載一些數據,我需要執行一些檢查並創建一個BaseDataStore類的類來存儲這些東西應用下載。所有這些在我的應用程序開始

將所有這些代碼放在applicationDidFinishLaunchingWithOptions中看起來像是正確的事情 - 因爲這是應用程序啓動後調用的東西。我的問題:這是放置它的正確地點嗎?或者我爲這類事情創建自己的班級?

+0

我建議有一個VC做「等待」(下載數據),在完成時進入「普通」ViewController。在你的AppDelegate中,你只是想知道你是否已經有了初始數據,然後去「下載VC」或者「正常」的VC。 – Larme

回答

2

總之:是的,你需要創建你自己的類。

將所有代碼放在AppDelegate和ViewController類中是iOS中的流行習慣。 iOS應用程序往往有小的(自動生成的)模型類,然後通過ViewControllers或AppDelegate進行管理。哪種是創建放屁應用等的最快方式。

如果你正在構建更大的放屁應用程序,我建議採取不同的方法:經理類可能會改變你的模型(設置,保存等)。 AppDelegate然後在需要時調用模型管理器。而且,當將「應用程序邏輯」放置在模型類中時,應用程序代碼通常會得到改進。爲了適應模型更改(並重新生成模型類),自動生成的ManagedObjects應該通過包含「應用程序邏輯」的類別進行擴展。

+0

+1 - 保持您的控制器層精益。使用真正的分離 –

+0

@ Daij-Djan - 謝謝你們 - 我開始一個大的iOS項目,它將涉及大量的網絡/ XML解析和Web服務。在用戶進入第一個屏幕之前,我需要做一些檢查並創建一些東西 - 還需要在此之前下載數據並準備好。所以我想爲每個部分分開我的代碼。我該怎麼做 - 我可以使用App Delegates來調用其他類的方法來啓動嗎?欣賞反饋! P.S我在哪裏可以找到有關ios應用程序架構最佳實踐的最佳途徑? – Tander

1

對於來自網絡的簡單的項目加載數據的過程應該是:

  1. 創建自定義LoadingViewController
  2. 顯示它從AppDelegate中applicationDidFinishLaunchingWithOptions
  3. 與實體管理器
  4. 獲取數據與回調(代表模式應該很好)根據您的數據啓動第一個視圖控制器

前兩個步驟用於顯示應用程序數據正在加載給用戶(如果您不這樣做,您將顯示Default.png顯示很長時間)。如果可以刷新第一個ViewController數據,則可以直接加載它,先顯示緩存的數據並啓動刷新。

+0

那麼,當應用程序啓動時,我需要做這樣的事情: 1.檢查用戶是否已經在此設備上啓動應用程序 2.基於上述(登錄信息,協議頁面等)執行預製操作 3 。啓動一個dataStore類 4.下載一些數據並解析它 5.繼續執行其餘的應用程序啓動.. 我看了一個由另一個開發人員完成的舊項目 - 所有啓動的東西和檢查在applicationDidFinishLaunchingWithOptions中完成,並且該方法非常大。我仍然可以使用該方法調用方法/開始從其他類下載東西嗎? – Tander

+0

是的,最初的應用程序流程可以直接寫入applicationDelegate,但只能寫入邏輯。如果(用戶已經啓動){調用該控制器; {別人叫別人; }。然後你的控制器可以通過你的經理類獲取數據。 – Francescu

+0

太好了。謝謝你們的幫助!今天我會就這個問題做更多的閱讀。 – Tander

相關問題