NSString比较不适用于iPAD

问题描述:

当我尝试比较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

您正在比较指针,而不是指针所代表的值。你所有的self.dx1Field.text!=dxName风格比较应该使用isEqualToString

+0

哈哈:D谢谢!我知道这件事......不知道我在想什么! –