将数组从一个类获取到另一个类时出现问题

时间:2011-02-15 10:28:56

标签: iphone

我在myclass.m中有4个数组

我需要将这些数组放入myclassviewcontroller.m

为此我在myclassviewcontroller.m中编写代码就像这样。

- (void)resultarrays :(NSMutableArray *)Agentids loanofficerid:(NSMutableArray *)Loanofficerid agentname:(NSMutableArray *)agentname agentemail:(NSMutableArray *)agentemail agentphone:(NSMutableArray *)Agentphone {

    agentids = [[NSMutableArray alloc] initWithObjects:Agentids,nil];
    loanofficerid = [[NSMutableArray alloc] initWithObjects:Loanofficerid,nil];
    agentnames = [[NSMutableArray alloc] initWithObjects:agentname,nil];
    agentemails = [[NSMutableArray alloc] initWithObjects:agentemail,nil];
    agentphone = [[NSMutableArray alloc] initWithObjects:Agentphone,nil];

    NSLog(@"123 %@",agentids);
    NSLog(@"123 %@",loanofficerid);
    NSLog(@"123 %@",agentnames);
    NSLog(@"123 %@",agentphone);
}

在myclass.m我写这个

myclassviewcontroller *LOVobj = [[myclassviewcontroller alloc]init];
    [LOVobj resultarrays:resultData_agent loanofficerid:array1 agentname:array2 agentemail:array3 agentphone:array4];

然后显示我在控制台中打印的所有对象。

在此之后,在按钮中单击我打印这些数组然后它打印为空。

即使我为它分配了setter和getter方法。

我没有什么问题可以帮助我。

提前感谢你。

2 个答案:

答案 0 :(得分:0)

首先,您要创建包含对数组的引用的数组,而不是参数数组中对象的数组。并且由于您正在存储参数数组的引用,如果参数数组的内容发生更改,所有引用也将更改。

你可能想要为每个数组都这样:

agentids = [NSMutableArray arrayWithArray: Agentids];

(和[agentids retain],因为arrayWithArray返回一个自动释放的对象)。

答案 1 :(得分:0)

首先,将代码更改为:

- (void)resultarrays :(NSArray *)Agentids loanofficerid:(NSArray *)Loanofficerid agentname:(NSArray *)agentname agentemail:(NSArray *)agentemail agentphone:(NSArray *)Agentphone {

    agentids = [[NSMutableArray alloc] initWithArray: Agentids];
    loanofficerid = [[NSMutableArray alloc] initWithArray: Loanofficerid];
    agentnames = [[NSMutableArray alloc] initWithArray: agentname];
    agentemails = [[NSMutableArray alloc] initWithArray: agentemail];
    agentphone = [[NSMutableArray alloc] initWithArray: Agentphone];

    NSLog(@"123 %@",agentids);
    NSLog(@"123 %@",loanofficerid);
    NSLog(@"123 %@",agentnames);
    NSLog(@"123 %@",agentphone);
}

如果您不想更改它,请不要传递可变数组。