我在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
答案 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