XCode Week even of oneven

Ik haal het weeknummer op met:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

[formatter setDateFormat:@"w"];
// Date to string
NSDate *now = [NSDate date];
NSString *weekNum = [formatter stringFromDate:now];
    
NSLog(@"%@", weekNum);

Dus nu is dat week 27

Dan wil ik het getal 27 gaan testen op odd or even met:

if( weekNum %2==0)

{

 NSLog(@"even");

}
else {

NSLog(@"oneven");

}

Ik krijg dan deze foutmelding:

invalid operands to binary expression (‘NSString *’ and ‘int’)

Hoe los ik dit op?

Je moet weekNum eerst in een integer omzetten. Hoe je dat doet kun je in de documentatie van NSString vinden: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/

NSString *weekNum = [formatter stringFromDate:now];

Ik denk niet dat een weekNum een String is…

if([weekNum intValue] % 2 == 0)  {
    NSLog(@”even”);
  } else {
   NSLog(@”oneven”);
}

En voor wie op de kleintjes let :slight_smile:

if([weekNum intValue] & 1 == 0) {
NSLog(@”even”);
} else {
NSLog(@”oneven”);
}

if([weekNum intValue] % 2 == 0)

Dat was de oplossing.
bitsflew bedankt.

 // Insert code here to initialize your application
    
    
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    [formatter setDateFormat:@"w"];
    // Date to string
    NSDate *now = [NSDate date];
    NSString *weekNum = [formatter stringFromDate:now];
        
    NSLog(@"%@", weekNum);
    
    
    if([weekNum intValue] % 2 == 0)  {
        NSLog(@"even");
    } else {
        NSLog(@"oneven");
    }
    
    
   }

@end

Je realiseert dat mijn antwoord hetzelfde was?

Maar oh wacht, ik gaf een link waar je op moest klikken en dan zelf iets moest opzoeken. Bitsflew kauwde je gewoon de code voor.

:evil:

btw De methode via NSDateFormatter is niet bijster efficiënt

De volgende methode is beter:

NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components = [calender components: NSWeekCalendarUnit fromDate: [NSDate date]];
int week = [components week];

‘calender’ hoef je maar één keer aan te maken, maw die zou je ook op kunnen slaan in een instance variable.

Als je op meer plaatsen in je code het weeknummer van een NSDate moet weten is het verstandiger om bovenstaande in een aparte functie of category te gieten.