NSString 比较不适用于 iPAD
NSString Comparison is not working on iPAD
当我尝试在 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
打开另一个 ViewController
和 tableView
显示一些值,用户将从中 select 并且它工作得很好。
我创建了一个获取 selected 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.
上设置了相同的代码 运行s
您正在比较指针,而不是指针所代表的值。您所有的 self.dx1Field.text!=dxName
风格比较都应该使用 isEqualToString
.
当我尝试在 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
打开另一个 ViewController
和 tableView
显示一些值,用户将从中 select 并且它工作得很好。
我创建了一个获取 selected 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.
上设置了相同的代码 运行s您正在比较指针,而不是指针所代表的值。您所有的 self.dx1Field.text!=dxName
风格比较都应该使用 isEqualToString
.