0

我的 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 正确地通过了配置文件类。没问题。什么可能导致失踪?

4

1 回答 1

0

我的朋友 Nop 再次救了我。他的调试技巧比我好很多。他向我展示了我的buildPf bool 实际上阻止了我的 prepareForSegue 到 Nationality_TableVC。当调用 segue 时,它​​跳过了准备。事实上,在prepareForSegue 中根本不需要buildPf条件。在这个愚蠢的错误上浪费了好几个小时。

于 2012-11-29T23:56:44.037 回答