2013-11-26 95 views
1

我有一個if語句,其中應用程序將把模態視圖控制器稱爲LoginViewController條件是dataCenter.usernameData返回(null),否則,它將繼續運行代碼。我已將其設置到它返回的位置(null)。但是,如果dataCenter.usernameData作爲(null)返回,那麼它似乎已翻轉到了哪裏,那麼它將不會添加LoginViewController,而是繼續從父視圖控制器運行代碼。如果語句可能似乎翻轉

下面是代碼:

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中以這種格式發佈它。它會翻轉回正確的方式還是會保持這種狀態?任何幫助表示讚賞。謝謝。

+0

我想確保我瞭解的情況。你是否將'data.usernameData'初始化爲字符串「@」(null)「',或者你是否一起跳過初始化並將其保留爲'nil'? – Matt

+2

嘗試:'if(!dataCenter.usernameData)'-let我知道 – Ilario

+0

現在,沒有什麼正在定義它期望它是NSString的事實。換句話說,沒有一行代碼表示:'usernameData = @(null);' – chrisjr

回答

1

這將檢查對象是否爲零或不:

if (!dataCenter.usernameData) 
1

從評論討論我們可以推斷dataCenter.usernameData未初始化,因此是nil對象。

當你執行你的if語句

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

你是一個nil對象比較的NSString的實例,這將失敗,並跟隨到您的else條款。

爲了解決這個問題,改變你的if語句

if (!dataCenter.usernameData)

這將檢查你的財產usernameData不是零和步入你的if語句。

+0

這工作。謝謝。我會將其標記爲正確的。 – chrisjr

+0

@ Junior117我在評論中說過... 20分鐘前 – Ilario

+0

@Iriorio哦。對於那個很抱歉。起初,我認爲它讀取'if(![dataCenter.usernameData isEqualToString:@「(null)」])',但經仔細檢查,你是對的。平心而論,請添加一個答案,以便我可以將其標記爲正確,因爲您首先回答了問題。 – chrisjr