数组循环的问题
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"];
}
}
我是 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"];
}
}