-4

我想使用情节提要将数组传递给另一个类,并且我准备了以下代码,但是,日志显示可变数组为空,显然不是这种情况(在另一种方法中,日志显示它不为空,仅在调用 prepareForSegue 时才变为空)。为什么是这样?

- (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)
4

2 回答 2

3

显然,你正在改变self.dateChosen其他地方。这与prepareForSegue:.

在调用 segue 之前返回并检查你做了什么(通过 IB 或通过方法)。

于 2012-12-12T17:52:33.303 回答
1

确保您的 dateChosen 属性是强类型:

@property (nonatomic, strong) NSMutableArray *dateChosen;
//if you have an NSArray instead of NSMutableArray, use copy instead of strong

同样在您的“方法”方法中(有史以来最糟糕的名字!),您应该使用 setter 来设置 dateChosen:

-(void)method:(NSMutableArray *)array {
 self.dateChosen=array; //not dateChosen = array;
 NSLog(@"The following has been copied %@", self.dateChosen);
}

最后,您需要在某处初始化您的数组。如果你从来没有做过类似的事情

self.dateChosen = [NSMutableArray array];

或者

self.dateChosen = <NON-NIL array pointer>

难怪它会为零。

附带说明:更好地选择您的方法/变量名称。不要将方法称为“方法”。如果使用数组,通常最好以复数形式命名它:date* s *Chosen,而不是 dateChosen。

于 2012-12-12T18:29:10.903 回答