2016-11-23 55 views
0

當我嘗試比較if條件中的兩個NSString時,我遇到了這個奇怪而又簡單的問題。它適用於iPhone,但在iPad上無法正常工作。
我有四個UITextFields和所有有delegate = self。在textFieldShouldBeginEditing我回來NO並沒有作爲對方法的調用:NSString比較不適用於iPAD

if (textField==self.dx1Field) 
    { 
     [self.view endEditing:YES]; 
     [self showDXViewForField:@"1"]; 
     return NO; 
    } 
    else if (textField==self.dx2Field) 
    { 
     [self.view endEditing:YES]; 
     [self showDXViewForField:@"2"]; 
     return NO; 
    } 
    else if (textField==self.dx3Field) 
    { 
     [self.view endEditing:YES]; 
     [self showDXViewForField:@"3"]; 
     return NO; 
    } 
    else if (textField==self.dx4Field) 
    { 
     [self.view endEditing:YES]; 
     [self showDXViewForField:@"4"]; 
     return NO; 
    } 
    else return YES; 

的方法showDXViewForField打開了另一ViewControllertableView,顯示一些值從哪個用戶會選擇一個和它工作完全正常。
我已經做出了一個委託方法來獲取選定的DX值,並且在這裏我應用了檢查,如果任何四個文本字段都有該值,則不會添加並顯示它已被添加。

-(void)getSelectedDX:(NSString*)dxName forField:(NSString *)fieldNumber 
{ 

    if ([fieldNumber isEqualToString:@"1"]) { 

     if (self.dx2Field.text!=dxName&&self.dx3Field.text!=dxName&&self.dx4Field.text!=dxName) { 
      self.dx1Field.text = dxName; 
     } 
     else 
     { 
      [KSToastView ks_showToast:@"This DX is already added!" duration:2.0f]; 
     } 

    } 
    else if ([fieldNumber isEqualToString:@"2"]) 
    { 
     NSLog(@"%@==%@",self.dx1Field.text,dxName); 
     if (self.dx1Field.text!=dxName&&self.dx3Field.text!=dxName&&self.dx4Field.text!=dxName) { 
      self.dx2Field.text = dxName; 
     } 
     else 
     { 
      [KSToastView ks_showToast:@"This DX is already added!" duration:2.0f]; 
     } 
    } //and same for 3 and 4 

問題是,當我在iPAD上運行它時沒有工作。它爲文本視圖設置重複值,但在iPhone上運行相同的代碼。

+1

由於David H的回答是正確的,似乎是你的問題,所以問你:你爲什麼要做'self.dx1Field.text!= dxName'和'[fieldNumber isEqualToString:@「2」]'?你似乎想要做同樣的測試,但以不同的方式使用。大衛H解釋了爲什麼,但這可能會給你提示你的代碼。 – Larme

回答

1

您正在比較指針,而不是指針所代表的值。你所有的self.dx1Field.text!=dxName風格比較應該使用isEqualToString

+0

哈哈:D謝謝!我知道這件事......不知道我在想什麼! –