当我尝试在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
,其中显示了一些值,用户可以从中选择一个值,并且工作得很好。检查是否四个文本字段中的任何一个都具有该值,则不添加该值,并显示该值已被添加。-(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
。
关于ios - NSString比较不适用于iPAD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40767015/