如果陈述可能似乎被翻转

时间:2013-11-26 15:55:10

标签: objective-c if-statement

我有一个if语句,其中app会在LoginViewController返回dataCenter.usernameData的条件下放置一个名为(null)的模态视图控制器,否则它将继续运行代码。我已将其设置为返回(null)的位置。但是,似乎这些语句已被翻转到dataCenter.usernameData作为(null)返回的位置,然后它不会添加LoginViewController,而是继续从父视图控制器运行代码。 / p>

以下是代码:

AppDelegate *dataCenter = (AppDelegate *) [[UIApplication sharedApplication] delegate];

    if ([dataCenter.usernameData isEqual: @"(null)"]) {

        ViewController *viewControl = [self.storyboard instantiateViewControllerWithIdentifier:@"LoginControllerNav"];

        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(didDismissSecondViewController)
                                                     name:@"SecondViewControllerDismissed"
                                                   object:nil];

        [self presentViewController:viewControl animated:NO completion:nil];

        NSLog(@"No username.");
    } else {

        NSLog(@"Username; continue running code.");
    }

这应该发生吗?或者我做错了什么?一个附带问题:说我在App Store中以这种格式发布它。它会翻回到正确的方式还是会保持这样?任何帮助表示赞赏。谢谢。

2 个答案:

答案 0 :(得分:1)

在评论讨论中,我们可以推断dataCenter.usernameData未初始化,因此是nil对象。

执行if语句时

if ([dataCenter.usernameData isEqual: @"(null)"])

您正在将nil对象与NSString的实例进行比较,该实例将失败并进入您的else子句。

要解决此问题,请将您的if语句更改为

if (!dataCenter.usernameData)

这将检查您的财产usernameData是否为零并进入您的if子句。

答案 1 :(得分:1)

这将检查对象是否为零:

if (!dataCenter.usernameData)