2011-05-05 70 views
2

我需要帮助调试此错误Expected Identifier。该代码是 -Objective-C预期标识符 - 简单的语法调试问题

+(NSString *)dayOfWeek { 
    NSDate *day = [NSDate date]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:day]; 
    day = [calendar dateFromComponents:components]; 
    NSLog(@"The DAY OF THE WEEK is -- %@", day); 
    NSArray *daysOfTheWeek = [NSArray arrayWithObjects:@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday", nil]; 

    NSString *dayName = [[[NSString alloc] initWithFormat:[daysOfTheWeek objectAtIndex:[[components weekday]-1]]]]; 
    return dayName; 
} 

我得到的错误标记为-1],将]下方。

回答

5

我觉得这行:

NSString *dayName = [[[NSString alloc] initWithFormat:[daysOfTheWeek objectAtIndex:[[components weekday]-1]]]]; 

应该是这样的:

NSString *dayName = [[NSString alloc] initWithString:[daysOfTheWeek objectAtIndex:[components weekday]-1]]; 

我改变initWithFormat由于编译器警告。你并没有用任何东西来代替,所以initWithString应该足够了。

+1

“我改变initWithFormat由于编译器警告”。将原始字符串传递给接受格式字符串的函数实际上是一个非常严重的错误。很显然,这里有一组固定的输入,但如果其中一天恰好是@“Mond%@ y”,程序就会崩溃。 – 2011-05-05 09:14:12

+0

+1'initWithString:' – 2011-05-05 09:21:25

+0

@Jon Hess谢谢指出! – 2011-05-05 09:29:33

1
NSString *dayName = [[NSString alloc] initWithFormat:[daysOfTheWeek objectAtIndex:[components weekday]-1]]; 

编辑:为什么你需要创建一个新的字符串不确定:就像尼克·韦弗指出,你应该使用initWithString:

NSString *dayName = [[NSString alloc] initWithString:[daysOfTheWeek objectAtIndex:[components weekday]-1]]; 

EDIT 2。以下不够?

NSString *dayName = [daysOfTheWeek objectAtIndex:[components weekday]-1]; 

注:我觉得这里真正的问题是,你真的不知道是干什么用的支架。

0
+(NSString *)dayOfWeek { 
    NSDate *day = [NSDate date]; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:day]; 
    day = [calendar dateFromComponents:components]; 
    NSLog(@"The DAY OF THE WEEK is -- %@", day); 
    NSArray *daysOfTheWeek = [NSArray arrayWithObjects:@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday", nil]; 
    NSString *dayName = [[NSString alloc] initWithFormat:[daysOfTheWeek objectAtIndex:[components weekday] - 1 ]]; 
    return dayName; 
} 

将工作:)

1

而不是

NSString *dayName = [[[NSString alloc] initWithFormat:[daysOfTheWeek objectAtIndex:[[components weekday]-1]]]]; 

使用

NSString *dayName = [daysOfTheWeek objectAtIndex:[components weekday]-1]; 
+0

+1他有一串字符串,为什么他需要创建一个新的? – 2011-05-05 14:12:49