Ios 为什么我的可变数组在prepareforsgue方法中变为NULL?

Ios 为什么我的可变数组在prepareforsgue方法中变为NULL?,ios,objective-c,arrays,null,uistoryboardsegue,Ios,Objective C,Arrays,Null,Uistoryboardsegue,我想使用故事板将一个数组传递到另一个类上,我准备了以下代码,但是,日志显示可变数组为null,而事实显然并非如此(在另一个方法中,日志显示它不是null,只有在调用PrepareForsgue时才变为null)。为什么会这样 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"confirmSegue"]) {

我想使用故事板将一个数组传递到另一个类上,我准备了以下代码,但是,日志显示可变数组为null,而事实显然并非如此(在另一个方法中,日志显示它不是null,只有在调用PrepareForsgue时才变为null)。为什么会这样

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"confirmSegue"]) {
        SBBookingConfirmation *bookingConfirmed=(SBBookingConfirmation*)segue.destinationViewController;
        NSLog(@"dates chosen - %@", self.dateChosen);    
        bookingConfirmed.confirmedTimings=self.dateChosen;
    }
}
输出:

dates chosen - (null)

显然,您正在其他地方更改self.DateSelected。这与
prepareforsgue:
无关


返回并检查在调用segue(通过IB或by方法)之前所做的操作

确保DateSelected属性为strong类型:

@property (nonatomic, strong) NSMutableArray *dateChosen;
//if you have an NSArray instead of NSMutableArray, use copy instead of strong
同样,在“方法”方法(有史以来最糟糕的名称!)中,您应该使用setter来设置DateSelected:

-(void)method:(NSMutableArray *)array {
 self.dateChosen=array; //not dateChosen = array;
 NSLog(@"The following has been copied %@", self.dateChosen);
}
最后,您需要在某个地方初始化数组。如果你从未做过这样的事

self.dateChosen = [NSMutableArray array];

self.dateselected=
难怪会是零

另请注意:请更好地选择方法/变量名称。不要只调用“方法”来调用方法。
如果使用数组,通常最好用复数形式命名:date*s*selected,而不是dateselected。

我唯一更改它的地方是这里,-(void)method:(NSMutableArray*)数组{dateselected=array;NSLog(@“以下内容已复制%@”,dateselected);}但在使用它之前它是零。所以你在其他地方更改了它。我明白了,但我自己并没有在任何地方将它设置为nil,所以这怎么会发生?@user1898662是你的
-方法:
方法,称为anyplace?(顺便说一句,对于一个方法来说,这是一个糟糕的名字。)你选择的日期的属性是什么?它应该是强壮的。此外,您的“方法”应该使用setter来设置它,即self.dateselected=array我们如何知道
dateselected
为什么为nil?您只在示例中提供了对它的引用,但它们都没有说明原因。
self.dateChosen = <NON-NIL array pointer>