我的 iOS 应用程序通过几个表视图将数据添加到基于字典的配置文件类中。当用户完成配置文件时,下一次登录他们可以跳过配置文件构建(以及那些表格视图),但如果他们选择,他们可以重建他们的配置文件。我使用 segues 一步一步地向前传递配置文件类。在重建时,应用程序会跳回到开头。问题:在重建时,配置文件在传递到第一个表视图(国籍)时消失。这是一些代码:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSMutableArray *sendArray = [[NSMutableArray alloc] initWithObjects:user0, nil];
NSLog(@"send array = %@", sendArray );
if( buildPf ) { // to Nationality VC
if ([[segue identifier] isEqualToString:@"getNationality"]) {
Nationality_TableVC *vc = [segue destinationViewController];
vc.profiles0 = sendArray;
}
} else { // to Profile VC
if( [[segue identifier] isEqualToString:@"directToProfile"] ) {
YourProfile_VC *vc = [segue destinationViewController];
vc.profiles10 = sendArray;
[vc setPushID:[user0.userID integerValue]];
[vc setPushedPf:profileSum];
}
}
}
在 Nationality_VC 中,.h:
@property(强,非原子)NSMutableArray *profiles0;
在他们中:
@implementation Nationality_TableVC {
NSUInteger selectedIndex;
NSUInteger selectedRow;
Profile *user0;
}
- (void)viewDidLoad {
[super viewDidLoad];
user0 = [[Profile alloc] init];
user0 = [self.profiles0 objectAtIndex:0];
NSLog(@"(Nationality) user0 is %@", user0);
selectedRow = -1;
[self makeTableIndex];
}
通过调试,可以看到跳转回来后类被正确填充了。sendArray 总是正确的。通过与初始构建期间相同的 segue,配置文件消失了。为什么?应用程序崩溃。在国籍表视图中,我有一个 NSLog。在初始构建期间,消息是:
(Nationality) user0 is <Profile: 0x7152330>
在重建期间,消息是:
(Nationality) user0 is (null)
然后尝试将国籍选择添加到(空)配置文件,当然会导致崩溃。如果用户选择重建然后改变主意,他们可以再次直接跳转到完成的配置文件。如果他们这样做,则 segue 正确地通过了配置文件类。没问题。什么可能导致失踪?