Ios 将对象添加到另一个类中的NSMutableArray

Ios 将对象添加到另一个类中的NSMutableArray,ios,properties,nsmutablearray,Ios,Properties,Nsmutablearray,您好,我有一个分组的表格视图。第一部分包含电子邮件列表,第二部分只有两行,分别是“手动添加电子邮件”和“从联系人中选择电子邮件” 登录ManualEmail.m会将计数记录为0,并且EmailViewController中的数组从未被修改,但我无法找出问题所在 这是我目前的设置 EmailViewController.h @property (nonatomic, retain) IBOutlet NSMutableArray *dataArray; EmailViewController.m

您好,我有一个分组的表格视图。第一部分包含电子邮件列表,第二部分只有两行,分别是“手动添加电子邮件”和“从联系人中选择电子邮件”

登录ManualEmail.m会将计数记录为0,并且EmailViewController中的数组从未被修改,但我无法找出问题所在

这是我目前的设置

EmailViewController.h

@property (nonatomic, retain) IBOutlet NSMutableArray *dataArray;
EmailViewController.m

@synthesize dataArray;

- (void)viewDidLoad {
    [super viewDidLoad];
    dataArray = [[NSMutableArray alloc] init];
    NSMutableArray *listItems = [[NSMutableArray alloc] initWithObjects:nil];
    [listItems addObject:[ObjectArrays productWithType:@"test" Eemail:@"test@website.com" Eselected:YES]];
    NSDictionary *firstItemsArrayDict = [NSDictionary dictionaryWithObject:listItems forKey:@"data"];
    [dataArray addObject:firstItemsArrayDict];
    NSArray *secondItemsArray = [[NSArray alloc] initWithObjects:@"Add Email Address From Contacts", @"Add Email Address Manually", nil];
    NSDictionary *secondItemsArrayDict = [NSDictionary dictionaryWithObject:secondItemsArray forKey:@"data"];
    [dataArray addObject:secondItemsArrayDict];
    [tableView reloadData];
}
    EmailViewController *emailPVC = [[EmailViewController alloc] init];
    NSDictionary *dictionary = [emailPVC.dataArray objectAtIndex:0];
    NSArray *array = [dictionary objectForKey:@"data"];
    NSMutableArray *emailArray = [NSMutableArray arrayWithArray:array];
    [emailArray addObject:[ObjectArrays productWithType:name.text Eemail:email.text Eselected:YES]];
    [emailPVC.dataArray removeObjectAtIndex:0];
    NSDictionary *firstItemsArrayDict = [NSDictionary dictionaryWithObject:emailArray forKey:@"data"];
    [emailPVC.dataArray insertObject:firstItemsArrayDict atIndex:0];
    NSLog(@"%d", [emailPVC.dataArray count]);
ManualEmail.m

@synthesize dataArray;

- (void)viewDidLoad {
    [super viewDidLoad];
    dataArray = [[NSMutableArray alloc] init];
    NSMutableArray *listItems = [[NSMutableArray alloc] initWithObjects:nil];
    [listItems addObject:[ObjectArrays productWithType:@"test" Eemail:@"test@website.com" Eselected:YES]];
    NSDictionary *firstItemsArrayDict = [NSDictionary dictionaryWithObject:listItems forKey:@"data"];
    [dataArray addObject:firstItemsArrayDict];
    NSArray *secondItemsArray = [[NSArray alloc] initWithObjects:@"Add Email Address From Contacts", @"Add Email Address Manually", nil];
    NSDictionary *secondItemsArrayDict = [NSDictionary dictionaryWithObject:secondItemsArray forKey:@"data"];
    [dataArray addObject:secondItemsArrayDict];
    [tableView reloadData];
}
    EmailViewController *emailPVC = [[EmailViewController alloc] init];
    NSDictionary *dictionary = [emailPVC.dataArray objectAtIndex:0];
    NSArray *array = [dictionary objectForKey:@"data"];
    NSMutableArray *emailArray = [NSMutableArray arrayWithArray:array];
    [emailArray addObject:[ObjectArrays productWithType:name.text Eemail:email.text Eselected:YES]];
    [emailPVC.dataArray removeObjectAtIndex:0];
    NSDictionary *firstItemsArrayDict = [NSDictionary dictionaryWithObject:emailArray forKey:@"data"];
    [emailPVC.dataArray insertObject:firstItemsArrayDict atIndex:0];
    NSLog(@"%d", [emailPVC.dataArray count]);

在ManualEmail.m中,您正在代码中创建
EmailViewController
。但是你从来没有调用过任何调用它的
-viewDidLoad
方法的东西,所以
dataArray
永远不会被创建或填充。您需要调用
emailPVC.view=
以便调用
-viewDidLoad

您的问题是什么?为什么日志返回0,为什么我无法从ManualEmail修改数组。md只能从EmailViewController调用ManualEmail,这意味着调用EmailViewController,然后从那里推送ManualEmail,这不重要吗EmailViewController viewDidLoad在首次打开时被调用您是否在
-viewDidLoad
中放置了断点以确保调用了它?这会告诉你比我的任何猜测都好。当EmailViewController启动时,它肯定会被调用,然后数组被初始化,但随后manualemail被推到导航堆栈,然后数组显然是空的。这让我感到困惑,因为属性在任何时候都不应该重置