我有一个特殊的问题,我暂时无法调试,所以我终于在这里发帖了。
我有一个iPhone应用程序。它有一个购物车对象。 Cart对象内部是各种变量。其中包括一个NSMutable“MainDish”对象数组。每个“MainDish”对象本身由各种变量组成,其中“Sides”(NSMutable Array)是一个。
现在问题是,当用户选择MainDish时,说“AngusBurger”并且没有向sides数组添加任何内容,然后返回并立即选择另一个“AngusBurger”,但是这个添加了一边:“fries”,“coke ,碰巧两个“AngusBurger”菜肴都加入了它们。
只有在“AngusBurgers”连续订购的情况下才会发生这种情况,在2个类似的maindishes之间还有另一个主菜然后这种行为不会发生......
我很疑惑不确定到底发生了什么......
以下是选择边的ViewController中的代码:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
FoodItem *fm = [Cart.foodItemsArray lastObject];
[fm.sidesArray addObject:_sidesItem];
}
非常感谢任何帮助 感谢
更多代码:
Inside ViewController-将fooditem添加到购物车:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
Cart = [CartSingleton getSingleton];
[Cart addFoodItemToCart:selectedFoodItem];
}
购物车内载:
-(id)init
{
self.foodItemsArray = [[NSMutableArray alloc]initWithCapacity:0];
}
-(void)addFoodItemToCart:(FoodItem *)itm
{
numFoodItems++;
[self.foodItemsArray addObject:itm];
}
FoodItem:
-(id)initWithObjects:(NSString *)_name
Description:(NSString *)_description
Calories:(NSString *)_calories
Price:(NSString *)_price
photoPath:(NSString *)_pathToPhoto
Category:(NSString*)_foodCategory
{
self.foodName = _name;
self.foodDescription = _description;
self.foodCalories = _calories;
self.foodPrice = _price;
self.pathToPhoto = _pathToPhoto;
self.foodCategory = _foodCategory;
sidesArray = [[NSMutableArray alloc]initWithCapacity:0];
return self;
}
将一个Sides项添加到FoodItem: (这是一个问题区域,如果只有连续食物是相同的类型,那么添加到以前的食物中的食物的一个项目也是如此)
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
Cart = [CartSingleton getSingleton];
FoodItem *fm = [Cart.foodItemsArray lastObject];
[fm.sidesArray addObject:_sidesItem];
}
SidesItem:
-(id)initWithObjects:(NSString *)_name
Description:(NSString *)_description
Calories:(NSString *)_calories
Price:(NSString *)_price
photoPath:(NSString *)_pathToPhoto
Category:(NSString*)_foodCategory
{
self.sideName = _name;
self.sideDescription = _description;
self.sideCalories = _calories;
self.sidePrice = _price;
self.pathToPhoto = _pathToPhoto;
self.sideCategory = _foodCategory;
return self;
}
答案 0 :(得分:0)
不要在“菜单”对象的购物车中添加引用,您必须创建它的副本。