将 nsmutablearray 复制到另一个视图控制器中的另一个 nsmutablearray 在数组中显示空值
Posted
技术标签:
【中文标题】将 nsmutablearray 复制到另一个视图控制器中的另一个 nsmutablearray 在数组中显示空值【英文标题】:copying nsmutable array into another nsmutable array in another viewcontroller is displaying null value in array 【发布时间】:2014-08-26 11:32:31 【问题描述】:我通过在 firstviewcontroller 中添加 viewdidappear 中的代码,将数组从第一个 viewcontroller 复制到第二个 viewcontroller。
secondViewController *xyzVC = [[ContactViewController alloc]initWithNibName:@"firstvc" bundle:nil];
xyzVC.arr = self.tableData;
NSLog(@"tabledata %@",tableData);
NSLog(@"arrdata %@",xyzVC.arr);
arr 数据正在获取与 tabledata 相同的数据。 但是当我在 secondviewcontroller 中使用它时,我得到空值作为 arr 数据。在第二个 viewcontroller 中,我导入了 firstviewcontroller.h 并将代码写入 secondviewcontroller.h 文件
@property (strong, nonatomic)NSMutableArray *arr;
在.mfile中
我在 tableview 中使用 arr。如果我是 alloc init,arr 我得到空数据,如果不是,那么结果相同。我需要分配 init 与否,如果是,以前的数据将被覆盖?我我是 ios 编程新手,请帮帮我。
【问题讨论】:
在推送到另一个视图之前,将上面的代码用于传输数据。不在 viewdidload 或 viewwillappear 中。 @Manthan 你能解释一下在你推送到另一个视图之前传输数据的代码是什么吗?我没有从第一个视图控制器推送第二个视图控制器。我没有任何推送操作第二个视图控制器。 首先检查 NsLog 中的 self.tableData,然后分配并初始化您的数组,然后您将获得数组中的数据。 你在 NSLog(@"tabledata %@",tableData) 得到了什么??? 上面的代码应该“通过”数组。如果您在另一边收到(NULL)
,那是因为您使用的是第二个 VC 的不同副本——在其他地方执行另一个 VC 的分配/初始化。如果你得到一个空数组()
,那是因为你在传递它之后以某种方式清空了数组(在第一个 VC 中)。
【参考方案1】:
在分配之前你需要为数组分配内存空间,你可以像下面这样:
secondViewController *xyzVC = [[ContactViewController alloc]initWithNibName:@"firstvc" bundle:nil];
xyzVC.arr = [[NSMutableArray alloc] init];
[aMutArrUserData addObjectsFromArray:self.tableData];
NSLog(@"tabledata %@",tableData);
NSLog(@"arrdata %@",xyzVC.arr);
【讨论】:
如何在第二个视图控制器中调用它。我需要在 secondviewcontroller 的 viewdidload 中做什么。因为我想在表格视图中使用这个 arr。 您只需要在 secondViewController 中使用 self.arr 访问成员变量。你只需要调用 [tableview reloadData];在视图中会出现 感谢您的支持 Rajesh,我使用了 self.arr,但是在记录 arr 时我得到了 null 值。在 viewdidload 中关于这个数组有什么可做的吗? 我已经创建了示例应用程序,它在我的最后运行良好。我已经使用了这个 self.detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; self.detailViewController.arr = [[NSMutableArray alloc] init]; [self.detailViewController.arr addObject:@"a"]; [self.navigationController pushViewController:self.detailViewController 动画:YES];在下一个视图中 - (void)viewDidLoad [super viewDidLoad]; NSLog(@"%@",self.arr); 它会在 consol 中打印一个以上是关于将 nsmutablearray 复制到另一个视图控制器中的另一个 nsmutablearray 在数组中显示空值的主要内容,如果未能解决你的问题,请参考以下文章