Добавление объекта в мою «Корзину» в iPhoneApp приводит к добавлению записи в объекты с несколькими индексами - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть особая проблема, которую я не смог отладить какое-то время, поэтому я наконец выложил ее здесь.

У меня есть приложение для iphone.У него есть объект корзины.Внутри объекта Корзина находятся различные переменные.Среди них NSMutable Array объектов "MainDish".Каждый объект «MainDish» сам состоит из различных переменных, среди которых «Стороны» (NSMutable Array) являются одной.

Теперь проблема в том, что когда пользователь выбирает MainDish, скажем «AngusBurger» и ничего не добавляет в массив сторон, затем возвращается и сразу выбирает другой «AngusBurger», но к этому добавляются стороны: «fries», "кока-кола, бывает так, что к обеим" AngusBurger "блюдам добавляются стороны.

Это происходит только в том случае, если" AngusBurgers "последовательно заказаны, если есть еще одно основное блюдо между 2 подобнымитогда это поведение не происходит .....

Я озадачен, не уверен, что именно происходит ......

Вот код внутри ViewController, когда сторонывыбрано:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    FoodItem *fm = [Cart.foodItemsArray lastObject];
        [fm.sidesArray addObject:_sidesItem];

}

Любая помощь будет принята с благодарностью. Спасибо

Подробнее Код:


Inside ViewController - добавление элемента питания в корзину:

- (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;
}

Добавление элемента сторон в FoodItem: (ЭТО ПРОБЛЕМАОБЛАСТЬ, БОЛЬШОЙ ПУНКТ, ДОБАВЛЕННЫЙ К 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;
}

1 Ответ

0 голосов
/ 15 апреля 2011

Не добавляйте в корзину ссылки на объект «меню», вам нужно создать его копии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...