gpt4 book ai didi

ios - 删除 iOS 中的数组元素问题?

转载 作者:行者123 更新时间:2023-11-28 21:38:51 25 4
gpt4 key购买 nike

我在 iOS 中遇到一个非常奇怪的问题。我有两个类 AViewControllerBViewController。在 AViewController 中,我有一个类似

的数组
@property NsmutableArray *array_one;

我在 prepareforsegue 方法中将一些数据从一个 View Controller 传递到另一个 View Controller 。

 if([self.array_one count]>0)
{

viewBController.array_two=self.array_one;

}

然后从 BviewController 我像这样传回数据

-(void)viewWillDisappear:(BOOL)animated
{


int j;


[self.delegate setData:self.array_two];

}

那我就是在用这个方法做这个工作

- (void)setData:(NSMutableArray *)data
{
NSString *string=[NSString stringWithFormat:@"%lu",(long)[data count]];
[self.array_one removeAllObjects];
int i;

for(i=0;i<[string intValue];i++)
{
User *u=[data objectAtIndex:i];
[self.array_one addObject:u];
}



}

现在发生的事情是,如果我添加此行 [self.array_one removeAllObjects]; 然后我的 data 数组,则在第二次将一个 Controller 查看到另一个 Controller 2 次变空了。我不知道为什么?请指导我

最佳答案

您使用两种不同的方法传递数据。

viewBController.array_two=self.array_one;

这会将 array_two 指针指定为与 array_one 相同的指针。这意味着它们都指向同一个数组。

然后,当您调用 [self.delegate setData:self.array_two] 时,首先发生的事情是调用 [self.array_one removeAllObjects]。但这指向与 array_two 相同的数组,因此您将清空数组。

如果两个类之间的数据在任何时候都明显相同,一种解决方案是将数组分配给两个 View Controller 一次,之后一个中的更改将反射(reflect)在另一个中。

如果不是,那么在分配给第二个 View Controller 时,您需要将数组复制到一个新对象。

关于ios - 删除 iOS 中的数组元素问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com