iOS:按日期排列XML行

时间:2012-07-13 06:24:13

标签: objective-c xcode date sorting ios4

我需要按XML的截止日期对行进行排序:

<plist version="1.0">
<array>
<array>
    <string>23 Jan 2012</string>
    <string>Chinese New Year</string>
    <string>Closed</string>
</array>
<array>
    <string>24 Jan 2012</string>
    <string>Chinese New Year</string>
    <string>Closed</string>
</array>
</array>

我研究了Objects Sorting With date ,Time Problem in Array(Iphone Development)中给出的答案,我发现它非常有用,但我有疑问:

  1. 我不明白我从哪里获得@“实体”和@“日期”。它是变量还是id,我在哪里获得它?

    if(date) {
        [dict setObject:entry forKey:@“entity”];
        [dict setObject:date forKey:@“date”];
        [tempArray addObject:dict]; }

  2. 给出的月份是MMM格式(JAN,FEB,MAR),作为我的项目范围之一被修复,我对如何通过缩写排序与正常编号相比无能为力那些。

  3. 我会非常感激一些帮助,因为我已经坚持了几天!谢谢!

2 个答案:

答案 0 :(得分:0)

创建一个带有对象的类(YourClass)(yourDateString,yourEvent,yourStatus)

YourClass
--yourDateString
--yourEvent
--yourStatus

解析此类对象中的xml保存详细信息(YourClass)并使用

将对象存储在此数组中(arrayWithYourContents)
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeStyle:NSDateFormatterFullStyle];
    [dateFormatter setDateFormat:@"dd mmm yyyy"];

    arrayWithYourContents sortUsingComparator: ^(id dateObj1, id dateObj2) 
     {
         NSDate *date1 = [dateFormatter dateFromString:[(YourClass *) dateObj1 yourDateString]];


         NSDate *date2 = [dateFormatter dateFromString:[(YourClass *) dateObj2 yourDateString]];

         return [date2 compare: date1];
     }
     ];  

我不确定日期格式(@“dd mmm yyyy”)..请检查这是否有效或将其更改为与您的匹配。

arrayWithYourContents现在应包含您的排序日期组件。

答案 1 :(得分:0)

为什么需要MMM月份格式?订购了“20120131”“YYYYmmdd”日期格式,因此更容易排序并转换回可读日期。

你的xml是一个数组数组,你可以免费使用NSArray arrayWithContentsOfFile加载这个文件。

就个人而言,我使用一个字典数组,因为标签顺序不是xml标准的保证(如果我记得很清楚)。

此处有关xml排序的说明:http://www.ibm.com/developerworks/xml/library/x-eleord/index.html