我正在寻找更新食品订单每当我调用一个方法时,该方法将保存订单数量并更新如果食品存在于字典中 这是我的代码:
-(void) addObjectsToArrayWithFoodName: (NSString *)foodName andPrice:(NSString *)price andCount:(NSString *)count andID:(NSString *)ID{
[_arrDicFoodDetails removeAllObjects];
if ([count isEqualToString:@"0"]) {
[_dicFood removeObjectForKey:ID];
return;
}
[_arrDicFoodDetails addObject:foodName];
[_arrDicFoodDetails addObject:price];
[_arrDicFoodDetails addObject:count];
[_dicFood setObject:_arrDicFoodDetails forKey:ID];
}
}
但是当我使用这段代码时会发生一些事情。 想象一下,我们添加了id(0)和count(1)的食物。 如果我们更新食物(0)和计数(2),再次全部好。 但是如果我们添加id(3)和count(1)的食物,它将更新食物(0)的记录太新的数据。
我希望你明白发生了什么......谢谢
答案 0 :(得分:0)
每次都使用相同的数组。抛弃实例变量_arrDicFoodDetails
并每次创建一个新数组:
-(void) addObjectsToArrayWithFoodName: (NSString *)foodName andPrice:(NSString *)price andCount:(NSString *)count andID:(NSString *)ID{
if ([count isEqualToString:@"0"]) {
[_dicFood removeObjectForKey:ID];
return;
}
_dicFood[ID] = @[ foodName, price, count ];
}
然而,这句话有点令人担忧:
count isEqualToString:@"0"
数字不是字符串,因此请使用正确的数据类型。另外,请考虑使用自定义对象而不是数组来对数据和功能进行分组。