基於ReactiveCocoa和MVVM設計的購物車基本操作實現程式碼解析

喬同X發表於2016-09-01

購物車單選全選價格計算數量增刪等等操作…RAC皆統統搞定.就是這麼cool~


開始之前你需要了解的

配置CocoaPods

安裝CocoaPods命令

配置ReactiveCocoa

然後在你的Podfile新增一下程式碼

最後輸入命令安裝

另外常用的pod 命令

開啟 你的專案工程名.xcworkspace 即可~

RAC在此我就不仔細介紹了,先推薦幾遍文章:

Mattt Thompson寫的ReactiveCocoa

Ash Furrow寫的 Getting Started with ReactiveCocoa

瞭解MVVM

Google了看幾篇有關的文章

Basic MVVM with ReactiveCocoa

MVVM-IOS-Example

MVVM 介紹 譯 朱巨集旭

簡單的介紹一下:

M:model放一些資料模型

V:view檢視

V:viewcontroller控制器

VM:viewmodel主要做處理邏輯和處理資料


開始著手程式碼

專案演示

gig1

專案搭建框架

整體檔案目錄按照模組分一下子檔案

viewmodel類方法屬性解析

獲取資料方法

1.迴圈20個從0到5之間隨機取陣列裡取值加到最終的cartData陣列裡
2.店鋪選擇shopSelectArray預設NO狀態
3.統計總共購物車數量cartGoodsCount

獲取當前選中價格總和方法

對cartData陣列轉訊號流然後map自定義需求return,期間自定義需求引數value 再次轉訊號流經過filter篩選未選中使isSelectAll為NO,然後經過map自定義需求使model.p_quantity*model.p_price得到的商品總價返回,最終return得到商品總價陣列pricesArray.

快速遍歷pricesArray得出總價allPrices

全選yes or not

shopSelectArray轉流map定義需求isSelect為YES的物件然後return 成可變陣列.

cartData轉流map定義需求,對其引數value轉流map定義需求KVC使model的isSelect屬性為YES,再次計算記錄總價allPrices.return再return成可變陣列.

單行選擇處理方法

KVC設定model的isSelect為YES,做店鋪下商品選中滿判斷

單行數量處理方法

KVC處理model.再次呼叫getAllPrices方法計算總價

左滑刪除商品

陣列刪除,做店鋪下商品刪除完判斷處理

刪除選中處理方法

建立可變集合shopSelectIndex,遍歷cartData,遍歷shopArray,取得選中的index2加到selectIndexSet中,做店鋪count和選中商品相等判斷,index1加到shopSelectIndex中,cartGoodsCount做遞減處理,然後依次shopArray做刪除操作,cartData在迴圈外刪除操作,shopSelectArray在迴圈外刪除操作,價格為0,重新計算價格

VC做監聽觀察處理

全選

刪除

結算

觀察價格屬性

全選狀態

title購物車數量

總結

主要的方法我都一一講了很清楚,具體的怎麼呼叫,可以到service裡,cell裡,控制元件裡看,寫了這麼一大堆,如果你還有什麼不懂,或者有更好的建議請留言,或者到我的github上issue我,如果我寫的對你有些幫助,請給予辛勞的博主一些打賞,謝謝~

相關文章