0

我不确定我是否采取了正确的方法,但我想从不同的视图控制器访问我的购物车类模型。我的第一种方法是在每个 viewController 中初始化一个 Cart * 对象,但我想我最终得到了多个购物车对象,而我想要的只是一个可以全局访问的对象。经过搜索,我想出了一种看起来更好的不同方法,但还没有运气。

我有一个按钮,应该将交易添加到购物车。但是当我尝试添加它时,该方法没有被调用。这是我设置它的方式。

在我的购物车类中,我有一个 NSMutableArray 来保存我的交易。

在我的 viewController 中,我设置了 Cart *cart 类型的属性并像这样初始化

@property (strong, nonatomic) Cart *cart;

...

-(id)initWithModel:(Cart *)cart {
    self = [super init];

    if(self){
        self.cart = cart;

    }

    return self;
}

然后我的按钮方法是这样的

-(IBAction)addDealToCart {

    NSLog(@"The Cart has %i items", [self.cart qtyOfItemsInCart]);

    NSLog(@"Added the Deal to the Cart");

    [self.cart addDealsToCart:self.deal];

    NSLog(@"The Cart now has %i items", [self.cart qtyOfItemsInCart]);

    self.deal.qtyInCart = self.deal.qtyInCart + 1;
    NSLog(@"the deal has %i items in the Cart", self.deal.qtyInCart);

}

在这一行中 addDealsToCart:deal 永远不会被调用。

这是我的购物车类中的 addDealsToCart:deal 方法

-(void)addDealsToCart:(Deals *)deal {
    [self.cartContents addObject:deal];
    NSLog(@"the deal was added to the cart %@",deal);
}

任何帮助都会很棒。谢谢

4

2 回答 2

0

如果不进行整个重新架构,为什么不将购物车对象传递给每个视图控制器?我个人不会走您的描述暗示的单身路线。

更新(示例):

UIViewController *yourNextVC = [[YourNextVC alloc] init];
yourNextVC.cart = self.cart //The current cart in your current vc, passing it along.
[self presentViewController:yourNextVC animated:YES completion:nil];
于 2013-04-07T01:21:53.607 回答
0

我你只想要一个 Cart 变量通过应用程序,如果你愿意,你可以在 appDelegate 中拥有它

@property (strong, nonatomic) Cart *cart;

而且取出很简单

AppDelegate *appDelegateObject=(AppDelegate*)[[UIApplication shareApplication] delegate];
appDelegateObject.cart.qtyOfItemsInCart= 1; //initialize where you want.

像这样在另一个视图控制器中取出:

  AppDelegate *appDelegateObject=(AppDelegate*)[[UIApplication shareApplication] delegate];
  NSLog(@"cart value: %d,appDelegateObject.cart.qtyOfItemsInCart);
于 2013-04-07T02:40:15.390 回答