在其他类中使用可变数组

时间:2013-07-11 23:43:35

标签: ios nsmutablearray

我尝试了几种我在这里找到的方法,但没有一种方法可行。将NSMutalbeArray传递给另一个View控制器的简单方法是什么?

    NSMutableArray *pph = [[NSMutableArray alloc] init];
    [pph addObject:[NSString stringWithFormat:@"%d     %d     %d",diario.Cowid,diario.Lact,diario.Del]];

在我下面的同一个文件上

- (IBAction)masInfoPPH;
{
    tipo = @"PPH";
    adiario = pph;
    NSLog(@"\n Array adiario: %@",pph);
    DetDiarioViewController *DetDiarios = [[DetDiarioViewController alloc] initWithNibName:nil bundle:nil];
    [self.navigationController pushViewController:DetDiarios animated:YES];
}

由于某种原因,pph(NSMutalbeArray)在这里变为null但在那里它确实给了我应该拥有的对象。 adiario是一个全局数组或至少它应该是。救命啊!

2 个答案:

答案 0 :(得分:1)

确实没有全局数组。在类的接口中为pph创建一个属性。

@property(nonatomic, strong) NSMutableArray *pph;  



self.pph = [[NSMutableArray alloc] init];
[self.pph addObject:[NSString stringWithFormat:@"%d     %d     %d",diario.Cowid,diario.Lact,diario.Del]]

但是你仍然需要将它带入下一个视图控制器。在它的界面中创建一个类似的属性,然后在推送之前设置它

DetDiarioViewController *detDiarios = [[DetDiarioViewController alloc] initWithNibName:nil bundle:nil];
detDiarios.pph = self.pph;
[self.navigationController pushViewController:detDiarios animated:YES];

BTW - 在objective-c中,惯例是对实例的第一个字母使用小写字母

答案 1 :(得分:0)

您的pph数组的范围在您的描述中不明确。但是在单个方法中声明的任何内容都是该方法的LOCAL,除非返回 BY该方法。

您有几个选项...将数组声明为实例变量,即..

@interface YourClass: NSObject {  NSMutableArray *pph; }

@implementation YourClass {  NSMutableArray *pph; }

static变量(在.m文件中)(这样您就可以访问Class+)方法中的值..

static NSMutableArray *pph = nil;

或最优选......作为财产

@interface YourClass @property (strong) NSMutableArray *pph;

然后您可以通过自动合成的Ivar _pph或通过属性的访问者self.pph从任何实例方法调用。

希望这有帮助!