如何从不同的viewControllers访问模型对象

时间:2013-04-07 01:14:47

标签: ios objective-c

我不确定我是否采取了正确的方法,但我想从不同的viewControllers访问我的购物车类的模型。我的第一个方法是在每个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:交易永远不会被调用。

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

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

任何帮助都会很棒。感谢

2 个答案:

答案 0 :(得分: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];

答案 1 :(得分:0)

我只想要一个购物车变量通过应用程序你可以在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);