共享NSMutableArray

时间:2011-02-22 14:48:09

标签: iphone objective-c

嘿嘿,我试图与另一个xib共享一个NSMutableArray。根据James Brannan的教程(http://www.vimeo.com/12164589),cartList.codigo是来自共享类的NSMutableArray。

当我算上它时,它给了我1.但是当我加载另一个视图时,给我0。

怎么了?

查看添加:

self.produtoCodigo = [[NSMutableArray alloc]init];
[self.produtoCodigo addObject:@"aa"];

CartViewController *carrinho = [[CartViewController alloc] initWithNibName:@"CartViewController" bundle:[NSBundle mainBundle]];

CartList *lista = [[CartList alloc] init];
carrinho.cartList = lista;
carrinho.cartList.codigo = self.produtoCodigo;

NSLog(@"QTD %i", [carrinho.cartList.codigo count]);

想要加载添加项目的视图:

- (void) viewDidAppear:(BOOL)animated {

self.produtoCodigo = self.cartList.codigo;

NSLog(@"%i", [self.produtoCodigo count]);


[super viewDidLoad];
}

我在两者中加载CartList类。

谢谢!

1 个答案:

答案 0 :(得分:1)

我的猜测是你没有保留阵列,只是分配它。

您是否在视图中保留了数组,如下所示 -

@property (nonatomic, retain) NSMutableArray * produtoCodigo;

“retain”为您的视图控制器提供阵列的所有权,您可以使用它。

因为我没有最好的代码可以提供帮助。

SHANI

更新 -

确定。你保留它但现在我看到“produtoCodigo”数组被保留但你没有在视图控制器中传递数组。

似乎你可以做两件事:

    视图控制器中的
  1. 将viewController“produtoCodigo”传递给视图“produtoCodigo”。

      carrinho.produtoCodigo= self.produtoCodigo;
    
  2. 如果您已将数组传递给“cartList”,则删除视图“produtoCodigo”数组,geter和seter(@synthesize& @property)。并且在视图中加载了你可以:

      produtoCodigo =[NSMutableArray arraryWithArray: self.cartList.codigo];
    
  3. 或者如果您以后需要使用它,您可以:

         produtoCodigo =[NSMutableArray alloc]initWithArray: self.cartList.codigo];
    

    并且不要忘记稍后在第二个选项中发布它。

    希望这次能帮助

    SHANI