Nelson 寫些 iOS 開發的東東

Posts match “ MVVM ” tag:

ReactiveCocoa 範例 - 處理網路請求

| Comments

前言

最近這半年來我開始使用 ReactiveCocoa 開發 APP,覺得它真的是很適合一般的 APP 使用情境,在我看來,它可以很漂亮的解決 當 XX 發生的時候,就執行 YY 的需求。今天這篇文章來分享一下,我是如何使用 ReactiveCocoa 強化舊有的網路請求功能。

我是用 AFNetworking 來實現網路請求功能,然後用 Mantle 來建立我的 model。現在我有個 APIManager 繼承自 AFHTTPSessionManager,它專門負責跟 server 之間的 API call,然後有個 User model,它繼承自 MTLModel <MTLJSONSerializing>。我打算完成的功能是「根據 email 取得使用者的資料」。

用 Objective-C 實作 Redux 架構

| Comments

前言

有一定的程式設計經驗之後,會愈來愈感受到程式架構的重要性,在 iOS app 開發的世界裡,最常見的莫過於 MVC 架構,因為它夠簡單而且是蘋果推薦的架構。但當你的程式越來越龐大,流程越來越複雜的時候,就會發現 MVC 架構已經無法滿足需求了。這幾年最為人所知的就是 MVP / MVVM / VIPER / Coordinator 這幾個模式。

我認為這些模式的著眼點都在於「UI」:它們假設你有一套辦法去存取或修改資料,然後它們提出的方案是關於如何處理「界面顯示 / 使用者互動 / 資料存取」之間的關係。

當程式越長越大,要儲存的狀態越來越多,不同畫面之間需要同步的資料也越來越多,我們該如何管理資料的存取、確保其一致性與正確性呢?Facebook 之前提出了 Flux 架構,後來有人提出改良版的 Redux 架構,不管是 Flux 還是 Redux,其重點都是在於「資料的流動是單向的,資料只有一份,並且只有一個角色可以修改資料」。

Flux / Redux 一開始提出是給網站使用的架構,後來有人把它套用到 iOS 開發,不過我查到的資料都是使用 Swift 實作。無可否認使用 Swift 來實作這套架構的確比較方便,只是我很好奇用 Objective-C 的話會有多困難,以下就是我的一些開發過程。