2012-03-24 5 views
-1

Hier ist, was ich versuche zu tun: Ich benutze die NSCalendar und NSDateComponents Objekte, um eine Schleife zu erstellen, die Text und ein Bild basierend auf dem Datum anzeigen wird. Also, meinen viewDidLoad ist dies ziemlich Standard:iOS: Was ist der beste Weg, um eine Schleife mit mehreren Argumenten/Anweisungen zu erstellen?

NSDate *today = [NSDate date]; 
NSCalendar *gregorian = [[NSCalendar alloc] 
         initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *dateComponents = 
[gregorian components:(NSDayCalendarUnit | NSMonthCalendarUnit) fromDate:today]; 
NSInteger day = [dateComponents day]; 
NSInteger month = [dateComponents month]; 

Dann nehme ich die Ints von Monat und Tag und habe dies:

if (month == 1 && day ==1) 
[do this] //display text 
[do this] //display image 

hier, wo ich Hilfe brauche: ich ursprünglich dies als eine erstellt if-else-Konstrukt:

if (month == 1 && day == 1) 
[do this] 
[do this] 
else if (month == 1 && day == 2) 
[do this] 
[do this] 

aber aus irgendeinem Grund, sobald ich die zweite Anweisung hinzufügen bekomme ich einen Fehler (erwartete Ausdruck)

so habe ich es zu:

if (month == 1 && day == 1) 
[do this] 
[do this] 
if (month == 1 && day == 2) 
[do this] 
[do this] 

aber jetzt meine zweite Anweisung aufgerufen wird, auch wenn wenn zurückkehren sollte 0

gibt es einen besseren Weg, um diese mit dem Schalter zu tun? Ist es möglich, mehr als einen Ausdruck als Teil von switch zu haben?

+0

Es gibt keine Schleife hier nur, wenn Aussagen. – sch

+0

Haben Sie vergessen, die Anweisungen zwischen dem if und dem else wenn in einen Block von Code {}? – dasdom

Antwort

2

sollten Sie geschweifte Klammern verwenden:

if (month == 1 && day == 1) { 
    [do this] 
    [do this] 
} else if (month == 1 && day == 2) { 
    [do this] 
    [do this] 
} 

Oder

if (month == 1 && day == 1) { 
    [do this] 
    [do this] 
} 
if (month == 1 && day == 2) { 
    [do this] 
    [do this] 
} 
+0

Ich nahm an, er/sie vergaß, sie hier zu setzen, weil das so offensichtlich ist ... – dasdom

+0

Ich denke, OP vergaß, sie in seinen Code und nicht nur in diesem Beitrag zu setzen, weil das die Probleme, die er/sie erwähnte: * * "Ich erhalte einen Fehler (erwarteter Ausdruck)" ** und ** "meine zweite Anweisung wird aufgerufen, auch wenn ich 0 zurückgeben sollte" ** – sch

+0

@sch: danke. Ich hatte die geschweiften Klammern weggelassen. Alle Beispiele, von denen ich bisher gearbeitet habe, haben sie nicht in einer if-Anweisung gezeigt. – Sirecho

Verwandte Themen