-1

我是 xcode 和面向对象开发的新手(当时是数据库......)并且我试图根据开始日期是否与结束日期相同来构建一个字符串,所以如果它是相同的返回开始日期,如果不返回开始和结束日期(即 15/02/2013 - 17/02/2013)。我的代码如下,但它不喜欢'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 附加到另一个。

这应该使您朝着正确的方向前进,但是如果您确实需要,我可以发布代码。

于 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 回答