-1

私はxcodeとオブジェクト指向開発に不慣れで(当時はデータベースでした...)、開始日が終了日と同じかどうかに基づいて文字列を作成しようとしています。開始日を返し、そうでない場合は開始日と終了日を返します (つまり、2013 年 2 月 15 日 - 2013 年 2 月 17 日)。私のコードは次のとおりですが、「fulldatestring」が好きではありません。if ステートメントに何か問題がありますか?

NSString *startDate = [info objectForKey:@"StartDate"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-mm-dd"];
NSDate *sdate = [dateFormatter dateFromString:startDate];
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/mm/yyyy"];
NSString *convertedStartDate = [dateFormatter stringFromDate:sdate];

NSString *endDate = [info objectForKey:@"EndDate"];
[dateFormatter setDateFormat:@"yyyy-mm-dd"];
NSDate *edate = [dateFormatter dateFromString:endDate];
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/mm/yyyy"];
NSString *convertedEndDate = [dateFormatter stringFromDate:edate];

if(convertedStartDate isEqualToString:convertedEndDate) {
    NSString *fulldatestring = convertedStartDate;
}
else
    NSString *fulldatestring = [convertedStartDate, convertedEndDate ];
{

cell.datesLabel.text = fulldatestring
4

2 に答える 2

1

NSDates を比較するには、NSDate インスタンス メソッドisEqualToDate:およびcompare:を参照してください。それらを比較するためにそれらを NSStrings に変換する必要はありません (またすべきではありません)。

NSString クラス リファレンスで「append」を検索すると、ある NSString を別の NSString に追加する 2 つのメソッドが表示されます。

これで正しい方向に進むはずですが、本当に必要な場合はコードを投稿できます。

于 2013-02-15T20:11:24.333 に答える
1

Objective-C の構文にはいくつかの問題があります。

isEqualToString: などのオブジェクトにメッセージを文字列に送信する場合は常に、角括弧で囲む必要があります。同様に、if ステートメントを囲む中かっこも一致しません。

if([convertedStartDate isEqualToString:convertedEndDate]) {
    NSString *fulldatestring = convertedStartDate;
} else {
    NSString *fulldatestring = [NSString stringWithFormat:@"%@ - %@", convertedStartDate, convertedEndDate];
}

同様に、NSString オブジェクトは可変ではないため、新しい NSString オブジェクトを作成する必要があるように、それらを連結することはできません。

于 2013-02-15T20:13:08.493 に答える