可能的重复项:
如果在比较两个 NSString 对象时"a == b"为假?
在"if"语句中,我正在比较两个字符串,"currentDateString"和"dateCreatedString",如果为真,则得到"今天",如果为假,则得到"dateCreatedString"。 尽管它们在创建新项目时应该相等,但 if 语句每次都返回 false,并且只是在我希望获得"今天"时给出 currentDateString。
- (NSString *)dateCreatedString
{
// Create a NSDateFormatter that will turn a date into a simple date string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSString *dateCreatedString = [dateFormatter stringFromDate:[_detailItem dateCreated]];
return dateCreatedString;
}
- (NSString *)currentDateString
{
// Create a NSDateFormatter that will turn a date into a simple date string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSString *currentDateString = [dateFormatter stringFromDate:[NSDate date]];
return currentDateString;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//places "Today" in the dateLabel if the two strings both equal today
if ([self currentDateString] == [self dateCreatedString] || [_detailItem dateCreated] == nil) {
[_dateTxt setText:@"Today"];
}
else{
[_dateTxt setText:[self dateCreatedString]];
}
}
有人可以帮助解释为什么会发生这种情况,以及如何解决它吗?
谢谢!
你应该使用 isEqualToString
来比较这样的字符串:
if ([[self currentDateString] isEqualToString:[self dateCreatedString]])
使用 ==
您将指针与字符串对象进行比较,这当然是不一样的。