2013-08-30 45 views
-1

我有一個UITextField,我試圖比較一個類中的字符串密碼。密碼爲零時發生問題。根據調試器,一個空的UITextField返回@"",所以我嘗試了一個基於長度的appproach。比較一個空的UITextField零字符串

NSString *pw; 
if([[alertView textFieldAtIndex:1].text length] > 0) 
    pw = room.password; 

if([pw isEqualToString:room.password]) 
    //do some code 

但是,這仍然不是爲無密碼的工作...香港專業教育學院甚至與調試器,無論pwroom.passwordnil(見下文)......怎麼回事驗證?

enter image description here

+0

那麼你想驗證兩者都是零,或不是零?我不確定你在問什麼。你說它不適用於無密碼,然後你繼續說你已經驗證了兩個文本字段都是零。 – Justin

+0

當'nil'時,'if'語句比較'pw'和'room.password'不會觸發,我不明白爲什麼。 –

+0

由於if語句返回false,因此不在語句中執行代碼。你期望的結果是什麼?什麼是輸入?您是否正在檢查以查看用戶是否輸入了文字? – Justin

回答

1

您可以發送任何消息到一個無對象。 「

」如果您希望消息的返回值發送到nil,則對於對象返回類型,返回值爲零,數值類型爲0,BOOL類型爲NO,返回的結構將所有成員初始化爲零。 - 資料來源:https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithObjects/WorkingwithObjects.html

由於pwnil記住,有宣稱該對象沒有isEqual方法。

因此,你應該做的是:

if([pw isEqualToString:room.password] || (pw == nil && room.password == nil)) 
+0

感謝我結束了使用這個 –

1

的問題是,你將消息發送到零。這永遠不會返回TRUE。

pw無法響應isEqualToString:選擇器,因爲它是零。

1

試試這個:

UITextField *textField = [alertView textFieldAtIndex:1]; 
if (textField.text == nil) { 
    //empty textField 
    DoSomething(); 
} else { 
    //textField contains text 
    DoSomethingElse(); 
} 
+0

感謝您的幫助! –

0

如果強是零,它不存在,所以你不能進行比較。