7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    ronvgs

    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?

    Inactief
    Anoniem

    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/

    Bijdrager
    johnkeates

    NSString *weekNum = [formatter stringFromDate:now];

    Ik denk niet dat een weekNum een String is…

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

    En voor wie op de kleintjes let:)

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

    Bijdrager
    ronvgs

    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
     
     
    Inactief
    Anoniem
    Powerbook op 03 juli 2013

    bitsflew bedankt.

    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:

    Bijdrager
    bitsflew

    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.

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.