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
打开了另一ViewController
与tableView
,显示一些值从哪个用户会选择一个和它工作完全正常。
我已经做出了一个委托方法来获取选定的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上运行相同的代码。
答
您正在比较指针,而不是指针所代表的值。你所有的self.dx1Field.text!=dxName
风格比较应该使用isEqualToString
。
+0
哈哈:D谢谢!我知道这件事......不知道我在想什么! –
由于David H的回答是正确的,似乎是你的问题,所以问你:你为什么要做'self.dx1Field.text!= dxName'和'[fieldNumber isEqualToString:@“2”]'?你似乎想要做同样的测试,但以不同的方式使用。大卫H解释了为什么,但这可能会给你提示你的代码。 – Larme