iOS 購物車

先看效果圖

add.gif

功能需求

  1. 多選,單選,全選,店鋪全選
  1. 商店滿減活動(dòng)
  2. 十進(jìn)制價(jià)錢計(jì)算
  3. 滿X元免運(yùn)費(fèi)
  4. 點(diǎn)擊商品靜如詳情,點(diǎn)擊店鋪跳轉(zhuǎn)店鋪主頁
  5. 側(cè)滑刪除,以及數(shù)量添加

首先說明一下數(shù)據(jù)結(jié)構(gòu)

  • 購物車信息


    BA6CD95D-371E-49B0-AEBD-455E82ECDC09.png
  1. 購物車CartList下的集合類容


    7B9ABE72-4281-4352-B12E-7137B63A5D46.png
  2. 運(yùn)費(fèi)信息


    5447F79C-798F-4781-BF71-01D903BFFC66.png

UI布局

FD87063B-5921-4AE5-94A2-2559721A7101.png

代碼部分

NSDecimalNumber:在iOS開發(fā)中,和貨幣價(jià)格計(jì)算相關(guān)的,需要注意計(jì)算精度的問題。即使只是兩位小數(shù),也會(huì)出現(xiàn)誤差。使用float類型運(yùn)算,是完全不夠的,NSDecimalNumber這個(gè)類是NSNumber的不可變子類。蘋果針對(duì)浮點(diǎn)型計(jì)算時(shí)存在精度計(jì)算誤差的問題而提供的一個(gè)計(jì)算類,它是基于10進(jìn)制的定點(diǎn)計(jì)算保證了精度不會(huì)缺失。同時(shí)也可以定制精度的取正類型:向上取正、向下去正、四舍五入等。相對(duì)與浮點(diǎn)類型的計(jì)算,NSDecimalNumber提供了更加精準(zhǔn)的計(jì)算。

// 這是整個(gè)購物車計(jì)算的核心,每一次選中商品,添加,或者刪除,都會(huì)重新將整個(gè)購物車?yán)锩娴纳唐啡〕鰜?,判斷是否選中,如果選中加入計(jì)算,更改UI
#pragma mark- 計(jì)算價(jià)錢
-(void)jisuanPrice
{
    self.totalprice = @"0";
    self.Actualprice=@"0";
    self.GoodsSelectCount = 0;
    self.canMadeCoup = @"0";
    for (int i=0; i<self.dataArr.count; i++) {
        
        HPShopCarModel * ShopCarModel =[self.dataArr objectAtIndex:i];
        ShopCarModel.currentSelectprice=@"0";
        for (int m = 0 ; m <ShopCarModel.content.count; m++) {
            
            HPShopdetailModel * modeldetail = [ShopCarModel.content objectAtIndex:m];
            if (modeldetail.isSelect) {
                
                NSDecimalNumber *count = [NSDecimalNumber decimalNumberWithString:modeldetail.count];
                NSDecimalNumber *decimalNumber1 = [[NSDecimalNumber decimalNumberWithString: modeldetail.price] decimalNumberByMultiplyingBy:count];
                NSDecimalNumber *decimalNumber2 = [NSDecimalNumber decimalNumberWithString:ShopCarModel.currentSelectprice];
                //加
                ShopCarModel.currentSelectprice = [[decimalNumber1 decimalNumberByAdding:decimalNumber2] stringValue];
                self.GoodsSelectCount = [modeldetail.count integerValue]+self.GoodsSelectCount;
            }
            
            
        }
        NSDecimalNumber *decimalNumber1 = [NSDecimalNumber decimalNumberWithString: self.totalprice];
        
        NSDecimalNumber *decimalNumber2 = [NSDecimalNumber decimalNumberWithString:ShopCarModel.currentSelectprice];
        NSDecimalNumber *decimalNumber3 = [NSDecimalNumber decimalNumberWithString:ShopCarModel.cut_price];
        //加
        self.totalprice =  [[decimalNumber1 decimalNumberByAdding:decimalNumber2] stringValue];
        
        NSLog(@"ShopCarModel.full_price:%@.....ShopCarModel.currentSelectprice:%@...ShopCarModel.cut_price:%@",ShopCarModel.full_price,ShopCarModel.currentSelectprice,ShopCarModel.cut_price);
        NSDecimalNumber *decimalNumber4 = [NSDecimalNumber decimalNumberWithString:self.Actualprice];
        
        self.Actualprice =[[decimalNumber4 decimalNumberByAdding:decimalNumber2] stringValue];
        
        
        if ([ShopCarModel.full_price doubleValue]<[ShopCarModel.currentSelectprice doubleValue]&&[ShopCarModel.full_price doubleValue]>0) {
            // 計(jì)算實(shí)際應(yīng)付的金額,(符合滿減條件去掉滿減的金額)
            NSDecimalNumber *decimalNumber5 = [NSDecimalNumber decimalNumberWithString:self.Actualprice];
            self.Actualprice =[[decimalNumber5 decimalNumberBySubtracting:decimalNumber3] stringValue];
            self.canMadeCoup = @"1";
            
            
        }
        
        
    }
    
    // 修改底部錢數(shù)顯示

    
    _BottomView.totalprice = [DJTUtility notRounding: [NSDecimalNumber decimalNumberWithString:self.totalprice] afterPoint:2];
    _BottomView.Actualprice = [DJTUtility notRounding: [NSDecimalNumber decimalNumberWithString:self.Actualprice] afterPoint:2];
    NSLog(@"totalprice:%@=====%@",self.totalprice,[NSString stringWithFormat:@"%.2lf",[self.totalprice floatValue]]);
    [_BottomView.Settlement_btn setTitle:[NSString stringWithFormat:@"結(jié)算(%ld)",self.GoodsSelectCount] forState:UIControlStateNormal];
    [self aboutfreihtUI];
}

購物車demo Github下載
https://github.com/LxwYl/XW-ShopCar

京東商品詳情 高仿
http://www.itdecent.cn/p/c51b1e4b0f8b

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容