Разбиение строки в Objective-C - PullRequest
1 голос
/ 30 марта 2012

Все,

У меня есть метод, который берет дату (ГГГГ-ММ-ДД Ч: М: С) из базы данных и создает URL с компонентами года, месяца и дня из строки даты,Мое решение работает, но мне было интересно, есть ли лучший способ сделать это?Как классные дети делают это?: -)

Спасибо!

   -(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;


   }

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Как я уже говорил в комментариях, я нахожу странным, что вы передаете и возвращаете значения в виде строк, когда они, вероятно, должны быть NSDate и NSURL соответственно.

Я бы, вероятно, сделал что-то вроде:

-(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]]];
}
1 голос
/ 30 марта 2012

Если у вас есть NSDate объект, вы можете использовать

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

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

NSString to 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"];
...