如何根据Xcode中的当前日期解析不同的文件?

时间:2013-04-01 09:57:11

标签: iphone xml algorithm parsing

我有以下问题:我正在构建一个电视指南的应用程序。我正在从互联网上的xml文件解析频道列表。这是我的代码:

-(void)loadListing
{
    NSURL *urlListing = [NSURL URLWithString:@"http://pik.bg/TV/bnt1/29.03.2013.xml"];

    NSData *webDataListing = [NSData dataWithContentsOfURL:urlListing];

    NSString *xPathQueryListing = @"//elem/title";

    TFHpple *parserListing = [TFHpple hppleWithXMLData:webDataListing];

    NSArray *arrayListing = [parserListing searchWithXPathQuery:xPathQueryListing];

    NSMutableArray *newArrayListing = [[NSMutableArray alloc] initWithCapacity:0];

    for (TFHppleElement *element in arrayListing)
    {
        Listing *shows = [[Listing alloc] init];
        [newArrayListing addObject:shows];
        shows.broadcast = [[element firstChild] content];
    }

    _shows = newArrayListing;
    [self.tableView reloadData];
}

查看第一行 - 我的文件名是 /.../ 01.04.2013.xml 明天的文件将是 /.../ 02.04.2013.xml 等。 如何根据当前日期解析不同的文件?像这样:今天解析/.../01.04.2013,明天将解析/.../02.04.2013等?提前谢谢!

2 个答案:

答案 0 :(得分:1)

  1. 首先,使用URL中使用的相同格式获取今天的日期。 (您必须使用单独的datemonthyear组件

  2. 然后,将该日期转换为NSString对象

  3. 形成NSString,例如NSString *strToDay = [NSString stringWithFormat:@http://pik.bg/TV/bnt1/%@.xml",strToDay];

  4. 将字符串用于NSURL,如; NSURL *urlListing = [NSURL URLWithString:strToDay];

  5. 注意此解决方案仅在您的网址包含您指定的日期格式时才有效。

答案 1 :(得分:0)

您可以使用已配置的NSDateFormatter属性生成相应格式的字符串。使用NSDate返回的[NSDate date]实例获取今天的日期,并使用格式化程序生成字符串。最后,将日期的字符串表示形式插入到URL字符串中,并从中构建NSURL

//  Assuming the TV schedule is derived from the Gregorian calendar
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

//  Use the user's time zone
NSTimeZone *localTimeZone = [NSTimeZone localTimeZone];

//  Instantiate a date formatter, and set the calendar and time zone appropriately
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setCalendar:gregorianCalendar];
[dateFormatter setTimeZone:localTimeZone];

//  set the date format. Handy reference here: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
[dateFormatter setDateFormat:@"dd.MM.yyyy"];

//  [NSDate date] returns a date corresponding to 'right now'.
//  Since we want to load the schedule for today, use this date.
//  stringFromDate: converts the date into the format we have specified
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];

//  insert the date string into the URL string and build the URL
NSString *URLString = [NSString stringWithFormat:@"http://pik.bg/TV/bnt1/%@.xml", dateString];
NSURL *URL = [NSURL URLWithString:URLString];

NSLog(@"URL = %@", URL);