将NSString与UITextField文本进行比较永远不会被调用

时间:2013-03-18 16:32:08

标签: ios objective-c cocoa-touch nsstring uitextfield

我在UITextField中记录了文本的值,我想稍后将文本与原始文本字段值进行比较。我尝试这样的东西,但我从未得到NSLog显示。有什么想法吗?

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

代码看起来像完全就像你看到的那样。第一行我赋值,另一行 - 我与之比较。它没有被召唤。

修改

代码本身 IS 被调用,当我将它们放入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

3 个答案:

答案 0 :(得分:1)

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

如果可能有任何

,您还可以在删除空格和新行后尝试比较
NSString *trimmmedText = [topicTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

if ([trimmmedText isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}

答案 1 :(得分:0)

尝试更改为:

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

if ([newString isEqualToString:defaultTopicText]){
    NSLog(@"YES");
}

答案 2 :(得分: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如果它是零,则只能使用这种比较方法与自身相同的对象。

topicTextField.text必须是nil ...因此它最终会执行:

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

并且运行时返回0;

...所以请将您的插座修复为topicTextField