0

重複の可能性:
2つのNSStringオブジェクトを比較するときに「a == b」がfalseの場合は?

「if」ステートメントで、「currentDateString」と「dateCreatedString」の2つの文字列を比較して、trueの場合は「Today」、falseの場合は「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]];
}
}

誰かがこれが起こっている理由とそれを修正する方法を説明するのを手伝ってもらえますか?

ありがとう!

4

1 に答える 1

4

isEqualToString次のような文字列を比較するために使用する必要があります。

if ([[self currentDateString] isEqualToString:[self dateCreatedString]])

あなたを使用==して、ポインタを文字列オブジェクトと比較していますが、これは確かに同じではありません。

于 2012-12-03T00:03:58.760 に答える