2011-05-05 44 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