【问题标题】:Integer to Script with a Variable in a URL?整数到 URL 中的变量脚本?
【发布时间】:2011-04-30 21:58:14
【问题描述】:

很抱歉,因为这个问题之前可能已经被问过,但我找不到适合我的情况的答案。 我是 Objective-C 的新手,而且我的知识也不完全,所以我事先道歉,因为我似乎并不了不起;)

所以,我有一个 webView,并且每天,url 都会发生变化。例如:4 月 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];
}

【问题讨论】:

    标签: iphone objective-c ios ios4


    【解决方案1】:

    查看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”

    【讨论】:

    • 我喜欢这个,Apple 文档有日期格式列表吗?我与NSDateFormatter 一起进行了快速搜索,但一无所获。
    • 亚当几乎拥有它。由于您使用的是当前日期,因此您可以稍微简化他的回答。您不需要执行第 4 行和第 5 行。将第 7 行切换为“NSString *monthString = [formatter stringFromDate:[NSDate date]];”你很好。这将取代你所有的日历内容。
    • @Ryan Unicode 技术标准 #35 用于模式,unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns
    • @McCygnus 谢谢,我实际上不知道所有这些都是标准化的。
    • 没关系,我明白了。只需要 4 M 再次感谢,你们是一个巨大的帮助!
    【解决方案2】:

    一个简单且可能很幼稚的方法是拥有一个包含您想要的文本的数组:

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

    这将允许您通过以下方式获取字符串:

    NSString *monthString = [months objectAtIndex:month];
    

    【讨论】:

    • 我正在使用这段代码,很容易实现我现在所拥有的。非常感谢您的帮助!
    • 不要忘记将至少一个答案标记为您的答案。尽管我仍然会将这份荣誉授予@adam。他的代码使用了实际的 Cocoa Touch,而我的代码充其量是“hackish”。不过,投票不会有什么坏处! ;)
    • 我会的,别担心。我通过使用到 Apr30 的 tinyurl 测试了这种方法,链接没有加载,即使我已经正确填写了 NSArray。当我将 *monthString 设置为 @"Apr" 时,它确实有效。有什么问题?
    • 如果一切都正确,我想它会起作用。我想不出任何会阻止简单连接字符串正常工作的东西。如果您仍然有问题,我可能会将其作为一个单独的问题发布,并提供您的完整(修订)代码。
    【解决方案3】:

    ,由于你没有使用标准的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]];
    

    编辑: 瑞恩是对的。他的解决方案更好。

    【讨论】:

    • 老实说,这有点不必要的冗长。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多