Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 数组的循环存在问题_Objective C_Arrays_Loops_Parse Platform_Cycle - Fatal编程技术网

Objective c 数组的循环存在问题

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

我是iOS新手。我正在制作一个应用程序,在其中我从解析后端获取数据,所有这些都工作正常。我申请订购和运送食物。我有一个购物车,可以在那里添加物品。如果产品已经在购物车中,但再次添加,则应增加数量,而不是在购物篮中创建另一个。我试图借助loop来实现它,但它并没有像它应该的那样工作。但产品是添加的,而不是增加数量。我真的希望得到你的帮助

+ (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,但同样的错误是,这是我需要的!!!非常好!!!马哈茂德亚当非常感谢!!!非常好!!!马哈茂德亚当非常感谢!!!是的,这是我需要的!!!非常好!!!马哈茂德亚当非常感谢!!!