【问题标题】:NSString Comparison is not working on iPADNSString 比较在 iPad 上不起作用
【发布时间】:2017-04-07 14:43:04
【问题描述】:

当我尝试在if 条件下比较两个 NSString 时,我遇到了这个奇怪而简单的问题。它在 iPhone 上完美运行,但在 iPad 上却不起作用。
我有四个UITextFields,并且都有delegate = self。在textFieldShouldBeginEditing 上,我返回NO 并调用该方法:

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 上运行。

【问题讨论】:

  • 由于 David H 的回答是正确的,并且似乎是您的问题,请问您:您为什么要这样做 self.dx1Field.text!=dxName[fieldNumber isEqualToString:@"2"]?你似乎想做同样的测试,但使用不同的方式。 David H 解释了原因,但这可能会为您提供代码提示。

标签: ios objective-c iphone ipad nsstring


【解决方案1】:

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

【讨论】:

  • 哈哈 :D 谢谢!我知道这件事......不知道我在想什么!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多