Objective c 数组的循环存在问题
我是iOS新手。我正在制作一个应用程序,在其中我从解析后端获取数据,所有这些都工作正常。我申请订购和运送食物。我有一个购物车,可以在那里添加物品。如果产品已经在购物车中,但再次添加,则应增加数量,而不是在购物篮中创建另一个。我试图借助loop来实现它,但它并没有像它应该的那样工作。但产品是添加的,而不是增加数量。我真的希望得到你的帮助Objective c 数组的循环存在问题,objective-c,arrays,loops,parse-platform,cycle,Objective C,Arrays,Loops,Parse Platform,Cycle,我是iOS新手。我正在制作一个应用程序,在其中我从解析后端获取数据,所有这些都工作正常。我申请订购和运送食物。我有一个购物车,可以在那里添加物品。如果产品已经在购物车中,但再次添加,则应增加数量,而不是在购物篮中创建另一个。我试图借助loop来实现它,但它并没有像它应该的那样工作。但产品是添加的,而不是增加数量。我真的希望得到你的帮助 + (void)addItem:(PFObject *)item { Cart *cart = [Cart sharedInstance]; for (NSU
+ (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];
+(void)附加项:(PFObject*)项{
购物车*购物车=[Cart sharedInstance];
对于(整数i=0;i<[cart.items count];i++){
如果([item valueForKey:@“objectId”]==[cart.items[i]valueForKey:@“objectId”]){
NSDecimalNumber*sumQtyNew=[NSDecimalNumber decimalnumberwhith尾数:1指数:0为负:否];
NSDecimalNumber*sumQty=[NSDecimalNumber DecimalNumberWith尾数:1指数:0为负:否];
sumQtyNew=[项目值forkey:@“数量”];
sumQty=[cart.items[i]valueForKey:@“数量”];
sumQty=[sumQty decimalNumberByAdding:sumQtyNew];
[[cart.items[i]valueForKey:@“objectId”]setObject:sumQty-forKey:@“qty”];
}
否则{
[cart.items addObject:item];
}
}
NSDecimalNumber*plus=[[NSDecimalNumber alloc]initWithString:[item objectForKey:@“price”];
cart.totalPrice=[cart.totalPrice小数位数byadding:plus];
}我会使用
NSMutableDictionary
来存储购物车项目,关键是objectId
,值是项目本身
+ (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"]
}
我会使用NSMutableDictionary
来存储购物车项目,关键是objectId
,值是项目本身
+ (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
用作nsmutalebarray
,下面是另一个答案
+ (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"];
}
}
如果必须将cart.items
用作nsmutalebarray
,下面是另一个答案
+ (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"];
}
}
你确定上面的代码有效吗?逻辑似乎是,每当购物车中的现有商品不匹配时,它就会添加新商品。因此,如果购物车中有15件物品,它会将新物品添加15次。至于为什么不匹配,if语句的计算结果似乎总是为false。尝试将[item valueForKey:@“objectId”]
更改为[[item valueForKey:@“objectId”]integerValue]
以及另一个valueForKey
是否确定上述代码有效?逻辑似乎是,每当购物车中的现有商品不匹配时,它就会添加新商品。因此,如果购物车中有15件物品,它会将新物品添加15次。至于为什么不匹配,if语句的计算结果似乎总是为false。尝试将[item valueForKey:@“objectId”]
更改为[[item valueForKey:@“objectId”]integerValue]
以及另一个valueForKey
是否确定上述代码有效?逻辑似乎是,每当购物车中的现有商品不匹配时,它就会添加新商品。因此,如果购物车中有15件物品,它会将新物品添加15次。至于为什么不匹配,if语句的计算结果似乎总是为false。尝试将[item valueForKey:@“objectId”]
更改为[[item valueForKey:@“objectId”]integerValue]
以及其他valueForKey
如您所说。将产品添加到购物车时,出现错误。((您没有将cart.items更改为NSMutabledictionary,它仍然是NSMutableArray我找不到如何将NSMutableArray转换为NSMutabledictionary…您可以建议吗?您需要将cart.items
类型更改为NSMutabledictionary
,如果必须使用cart.items
作为NSMutableArray
您需要添加另一个NSMutableDictionary*itemsDictionary
要使用,并在最后分配cart.items=[itemsDictionary allObjects]
我将cart.items NSMutableArray替换为cart.items NSMutableDictionary,但错误与您所说的相同。当我将产品添加到购物车时,出现了错误((您没有将cart.items更改为NSMutabledictionary,它仍然是NSMutableArray我找不到如何将NSMutableArray转换为NSMutabledictionary…您可以建议吗?您需要将cart.items
类型更改为NSMutabledictionary
,如果必须使用cart.items
作为NSMutableArray
您需要添加另一个NSMutableDictionary*itemsDictionary
要使用,并在最后分配cart.items=[itemsDictionary allObjects]
我将cart.items NSMutableArray替换为cart.items NSMutableDictionary,但错误与您所说的相同。当我将产品添加到购物车时,出现了错误((您没有将cart.items更改为NSMutabledictionary,它仍然是NSMutableArray我找不到如何将NSMutableArray转换为NSMutabledictionary…您可以建议吗?您需要将cart.items
类型更改为NSMutabledictionary
,如果必须使用cart.items
作为NSMutableArray
您需要添加另一个NSMutableDictionary*itemsDictionary
要使用,并在最后分配cart.items=[itemsDictionary allObjects]
我将cart.items NSMutableArray替换为cart.items NSMutableDictionary,但同样的错误是,这是我需要的!!!非常好!!!马哈茂德亚当非常感谢!!!非常好!!!马哈茂德亚当非常感谢!!!是的,这是我需要的!!!非常好!!!马哈茂德亚当非常感谢!!!