Целое число для сценария с переменной в URL? - PullRequest
0 голосов
/ 01 мая 2011

Извините, поскольку этот вопрос, возможно, задавался ранее, но я не смог найти ответ, который сработал в моей ситуации.Я новичок в Objective-C, и я не совсем осведомлен, поэтому я заранее извиняюсь в случае, если мне кажется, что я не удивительный;)

Итак, у меня есть webView, и каждый день, URLизменения.Пример: 30 апреля URL-адрес http://example.com/mylinkApr30 Используя даты, я создал переменную (извините, если моя терминология отключена: \), а URL-адрес заканчивается на% d, все работает просто отлично, кроме случаев, когда идет месяц,Месяцы представлены не в типичной форме MM, а в сокращенном тексте с тремя первыми буквами названия месяца.Пример: январь, февраль, мар, апрель и т. Д.

У меня работает целое число месяца, и оно записывается как 1,2,3 и т. Д. Как мне изменить это значение на январь, февраль, март?

Есть ли другой способ, которым я мог бы пойти об этом ??Я могу подтвердить, что дни работают, я проверил это, имея 1 переменную и используя Apr в конце ссылки.

Вот мой код, так что вам будет легче понять, о чем я спрашиваю.

- (void)viewDidLoad
{    
[super viewDidLoad];
self.navigationItem.title = @"Balmoral";
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  
NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | 
NSSecondCalendarUnit;
NSDate *date = [NSDate date];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
//NSInteger year = [dateComponents year];
NSInteger month = [dateComponents month];
NSInteger day = [dateComponents day];
//NSInteger hour = [dateComponents hour];
//NSInteger minute = [dateComponents minute];
//NSInteger second = [dateComponents second]; 

NSString *baseURLStr = @"http://wwww.WebsiteHere.com/Apr";
NSURL *url = [NSURL URLWithString:[baseURLStr stringByAppendingFormat:@"%d.ashx", day]];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
[NSCalendar release];
}

Ответы [ 3 ]

2 голосов
/ 01 мая 2011

Проверьте класс NSDateFormatter, что-то вроде:

int month = 3;

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM"];
NSDate *date = [formatter dateFromString:[NSString stringWithFormat:@"%02i", month]];
[formatter setDateFormat:@"MMM"];
NSString *monthString = [formatter stringFromDate:date];

NSLog(@"MONTH STRING %@", monthString);

monthString должно быть "Mar"

0 голосов
/ 01 мая 2011

Простой и, вероятно, наивный подход состоит в том, чтобы иметь массив с нужным вам текстом:

NSArray *months = [NSArray arrayWithObjects:@"Jan", @"Feb", nil];

Это позволит вам получить строку:

NSString *monthString = [months objectAtIndex:month];
0 голосов
/ 01 мая 2011

, поскольку вы не используете стандартный формат MM, вы не можете использовать NSDateFormatter.Вам нужен переключатель на все 12 месяцев.

NSString * monthString = nil;
switch (month)
{
case 1:
monthString = @"Jan";
break;
case 2:
...
}

Затем измените собственный код:

NSString *baseURLStr = @"http://wwww.WebsiteHere.com/";
NSURL *url = [NSURL URLWithString:[baseURLStr stringByAppendingFormat:@"%@%d.ashx", monthString, day]];

РЕДАКТИРОВАТЬ: Райан прав.его решение лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...