1

我在 my 中记录了文本的值,UITextField我想稍后将文本与原始文本字段值进行比较。我尝试这样的事情,但我从来没有得到NSLog显示。任何想法为什么?

defaultTopicText = topicTextField.text;
if ([topicTextField.text isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}else{
    NSLog(topicTextField.text);
    NSLog(defaultTopicText);
}

代码看起来和你看到的一模一样。我分配值的第一行和另一行 - 我与它进行比较。它没有被调用。

编辑:

代码本身调用,当我将它们放入时,我也会得到相同的值NSLog。问题可能是文本字段包含@"\n"字符吗?

NSLog给了我这个:

2013-03-18 20:45:22.037 myapp[524:907] 

Here comes the text
2013-03-18 20:45:22.039 myapp[524:907] 

Here comes the text
4

3 回答 3

1

尝试打印出 the 的值topicTextField.text并查看显示的内容。否则设置断点以查看您是否到达该特定代码行。

您还可以尝试在删除空格和换行后进行比较,如果有的话

NSString *trimmmedText = [topicTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if ([trimmmedText isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}
于 2013-03-18T16:36:38.063 回答
0

尝试更改为:

NSString *newString = [defaultTopicText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if ([newString isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}
于 2013-03-18T16:37:23.223 回答
0

我输入了以下找到的答案......运行它应该会给你答案:

if(!defaultTopicText){
    NSLog(@"defaultTopicText is nil");
}else{
    NSLog(@"defaultTopicText is a: %@".[defaultTopicText classname]);
}

defaultTopicText = topicTextField.text;
if ([topicTextField.text localizedCaseInsensitiveCompare:defaultTopicText] == NSOrderedSame){
    NSLog(@"YES");
}else{
NSLog(@"\"%@\" != \"%@\"",defaultTopicText, topicTextField.text);
}

然后我意识到:topicTextField.text如果它是nil,则使用这种比较方法只能与自身不是同一个对象。

topicTextField.text必须是nil......所以它最终执行:

id var = nil;
[var isEqual:nil];

并且运行时使它返回 0;

...所以修复你的出口topicTextField

于 2013-03-18T16:43:15.420 回答