2012-03-30 6 views
1

Alle,Breaking Up einen String in Objective-C

Ich habe eine Methode, die ein Datum (YYYY-MM-DD H: M: S) nimmt aus der Datenbank und erstellt eine URL mit dem Jahr, Monat und Tageskomponenten aus der Datumszeichenkette. Meine Lösung funktioniert, aber ich frage mich, ob es einen besseren Weg gibt, dies zu tun? Wie geht es den coolen Kids? :-)

Danke!

-(NSString *) prettyURLFrom:(NSString *)dateString{ 



    NSString * URLString = @""; 
    NSString *URL = @"http://www.theblues.com/featured/article/"; 

    NSArray *myWords = [dateString componentsSeparatedByCharactersInSet: 
         [NSCharacterSet characterSetWithCharactersInString:@"-\" \" :"] 
         ]; 


    URLString = [NSString stringWithFormat:@"%@%@/%@/%@", 
        URL, 
        [myWords objectAtIndex:1], 
        [myWords objectAtIndex:2], 
        [myWords objectAtIndex:0]]; 



    return URLString; 


    } 
+0

Sie werden aus der Datenbank eine Zeichenfolge oder Datum Objekt abrufen? –

+0

Ja. SQLite3. Ich denke, ich weiß, wohin Sie gehen - formatieren Sie die Zeichenfolge auf der Datenbankseite, richtig? – Slinky

+0

Ich frage mich, warum Sie das Datum nicht als NSDate übergeben und eine Zeichenfolge anstelle von NSURL zurückgegeben haben. –

Antwort

1

Wie ich in den Kommentaren gesagt, finde ich es seltsam Sie vorbei und Rückkehr Werte als Zeichenfolgen, wenn sie wahrscheinlich NSDate bzw. NSURL sein sollten.

würde ich wahrscheinlich so etwas wie:

-(NSURL*)URLFromDate:(NSDate*)date 
{ 
    // Assumes user uses a gregorian calendar 
    NSDateComponents *dateComp = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:date]; 

    return [NSURL URLWithString:[NSString stringWithFormat:@"http://www.theblues.com/featured/article/%li/%li/%li" 
            , [dateComp year] 
            , [dateComp month] 
            , [dateComp day]]]; 
} 
+0

Ja, Sie haben Recht. Will etwas tun, was du vorgeschlagen hast. Danke – Slinky

+0

Nur um zu klären, für jeden, der mit den oben genannten Beispielen arbeitet - Die Lösung, die NSDateComponents oben verwendet, benötigt einen Formatspezifizierer% li, nicht% @ Also: http://www.theblues.com/featured/article/%li/ % li /% li Danke an alle für die Hilfe dabei. – Slinky

1

Wenn Sie NSDate Objekt haben, dann können Sie verwenden

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:date]; 

    NSInteger day = [components day]; 
    NSInteger month = [components month]; 
    NSInteger year = [components year]; 

NSString zu NSDate

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"YYYY-MM-DD HH:MM:SS"]; 

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:@"1999-07-02 2:2:4"];