Я новичок в iOS. Я делаю приложение, в котором я получаю данные из Parse back-end, все работают нормально. Мое заявление на заказ и доставку еды. У меня есть тележка, где я добавляю предметы. Если продукт уже находится в корзине, но добавил его снова, он должен увеличить количество и не создать еще один в корзине. Я попытался реализовать его с помощью цикла, но он не работает должным образом. Но продукт добавляется вместо увеличения их количества. Я очень надеюсь на вашу помощь.Проблемы с петлей массива
+ (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];
}
Вы уверены, что приведенный выше код работает? Логика, по-видимому, заключается в том, что каждый раз, когда нет никакого совпадения с существующим элементом в корзине, он добавляет новый элемент. Поэтому, если у вас есть 15 предметов в корзине, он добавит новый предмет 15 раз. Что касается того, почему это не соответствует, кажется, что оператор if всегда вычисляет false. Попробуйте изменить '[item valueForKey: @" objectId "]' to '[[item valueForKey: @" objectId "] integerValue]', а также другое значение valueForKey' – dstudeba