0

我需要按 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. 我不明白我在哪里得到 @"entity" 和 @"date" 。它是变量还是 id,我在哪里获得它?

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

  2. 给出的月份是 MMM 格式(JAN、FEB、MAR),它是我的项目范围之一,与正常编号的相比,我不知道如何按缩写进行排序。

非常感谢这里的一些帮助,因为我已经坚持了几天!谢谢!

4

2 回答 2

0

用对象(yourDateString,yourEvent,yourStatus)创建一个类(YourClass)

YourClass
--yourDateString
--yourEvent
--yourStatus

在此类(YourClass)的对象中解析您的xml保存详细信息,并将对象存储在此数组(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 现在应该包含您的排序日期组件。

于 2012-07-13T06:59:52.570 回答
0

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

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

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

在这里阅读有关 xml 排序的信息:http: //www.ibm.com/developerworks/xml/library/x-eleord/index.html

于 2012-07-13T07:40:05.200 回答