主题:MVVM的细节处理
一. 就拿购物车来说吧,代码如下:shoppingCarVM
@interface shoppingCarVM : NSObject
@property (nonatomic,strong)NSMutableArray *limitDatasArr;
@property (nonatomic,copy)void(^limitDatasBlock)(NSArray <GoodsModelInList*>*limitDatas ,NSInteger code);
@property(nonatomic,copy) void(^clickLimitCellBlock)(GoodsModelInList *listModel);//点击推荐的cell出发的事件
/// 计算总价
-(NSString *)calculationCarAllPrice:(NSArray <OrderGoodsModel*>*)goodsModels
/// 计算 item的个数
-(NSString *)calcilationShopCarAllCount:(NSArray <OrderGoodsModel*>*)goodsModels;
/// 新增购物车
-(void)addShopCar:(OrderGoodsModel*)goodsModel handleback:(void(^) (NSInteger code))shopaCarGoodsBlock;
/// 得到购物车的数据
-(void)getShopCarGoodsHandleback:(void(^)(NSArray *shopCarGoods ,NSInteger code))shopaCarGoodsBlock;
/// 修改购物车的数量
-(void)changeShopCarGoodsCount:(NSString *)count goods:(OrderGoodsModel*)goodsModel handleback:(void(^) (NSInteger code))shopaCarGoodsBlock;
/// 清空购物车
-(void)delectAllShopCarGoodsHandleback:(void(^) (NSInteger code))shopaCarGoodsBlock;
/// 删除购物车某个购物项
-(void)delectaShopCarGoods:(OrderGoodsModel*)goodsModel handleback:(void(^) (NSInteger code))shopaCarGoodsBlock;
/// 收藏购物车的某个购物项
-(void)collectShopCarGoods:(OrderGoodsModel*)goodsModel state:(NSString*)state handleback:(void(^) (NSInteger code))shopaCarGoodsBlock;
/// 购物车没有数据的时候 热门推荐的数据请求
-(void)getLimitBuyData;
@end
基本上购物车的所有的逻辑处理喝数据请求都放在VM里面,处理完后通过block回调结果到ViewConview,viewController做的事情主要就是负责数据展示和用户交互两件事情
二 .购物车的VC层shopCarVC直接调用VM的接口处理数据请求,清空购物车,增加或减少等
如果在商品列表也需要新增购物车或添加商品到购物车一样可以跳用这里的VM层来统一处理购物相关事宜。
三.购物车的选中状态处理:一般也是在VM里面也就是
/// 得到购物车的数据
-(void)getShopCarGoodsHandleback:(void(^)(NSArray *shopCarGoods ,NSInteger code))shopaCarGoodsBlock;
这个接口里面处理数据。我是是使用FMDB来做持久化保存上次的选中的状态。在请求到数据后把状态赋值给模型。
网友评论