簡體   English   中英

數組循環問題

[英]Problems with the loop of the array

我是iOS新手。 我正在制作一個應用程序,在其中我從Parse后端獲取數據都工作正常。 我的食品訂購和交付申請。 我有一個購物車,可以在其中添加物品。 如果產品已經在購物車中但又添加了,則應該增加數量,而不要在購物籃中創建另一個產品。 我試圖借助循環來實現它,但是它不能正常工作。 但是添加產品而不是增加數量。 我真的希望您的協助。

+ (void)addItem:(PFObject *)item {

Cart *cart = [Cart sharedInstance];

for (NSUInteger i = 0; i < [cart.items count]; i++) {
    if ([item valueForKey:@"objectId"] == [cart.items[i] valueForKey:@"objectId"]) {

        NSDecimalNumber *sumQtyNew = [NSDecimalNumber decimalNumberWithMantissa:1 exponent:0 isNegative:NO];
        NSDecimalNumber *sumQty = [NSDecimalNumber decimalNumberWithMantissa:1 exponent:0 isNegative:NO];

        sumQtyNew = [item valueForKey:@"qty"];
        sumQty =  [cart.items[i] valueForKey:@"qty"];
        sumQty = [sumQty decimalNumberByAdding:sumQtyNew];

        [[cart.items[i] valueForKey:@"objectId"] setObject:sumQty forKey:@"qty"];

    }
    else {
        [cart.items addObject:item];
    }
}

NSDecimalNumber *plus = [[NSDecimalNumber alloc]initWithString:[item objectForKey:@"price"]];
cart.totalPrice = [cart.totalPrice decimalNumberByAdding:plus];

}

我將使用NSMutableDictionary來存儲購物車項目,鍵是objectId ,值是Item本身

+ (void)addItem:(PFObject *)item {
    Cart *cart = [Cart sharedInstance];
    NSMutableDictionary * cartItems = cart.items
    NSString *objectId = [item valueForKey:@"objectId"];
    if ([cartItems objectForKey:objectId] == nil){
         [cartItems setObject:item forKey:objectId]
    } else {
        PFObject *oldItem = [cartItems objectForKey:objectId];
        int sumQty = [[oldItem valueForKey:@"qty"] intValue] + [[item valueForKey:@"qty"] intValue];
        [cartItems setObject:[NSNumber numberWithInt:sumQty] forKey:@"qty"]
    }

如果您必須將cart.items用作NSMutalbeArray ,則這是另一個答案

+ (void)addItem:(PFObject *)item {
    Cart *cart = [Cart sharedInstance];
    NSMutableArray * cartItems = cart.items
    NSString *objectId = [item valueForKey:@"objectId"];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"objectId = %@", objectId];
    PFObject *existingItem = [[cartItems filteredArrayUsingPredicate:predicate] firstObject];

    if (existingItem == nil){
        [cartItems addObject:item];
    } else {
        int sumQty = [[existingItem valueForKey:@"qty"] intValue] + [[item valueForKey:@"qty"] intValue];
        [existingItem setObject:[NSNumber numberWithInt:sumQty] forKey:@"qty"];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM