我需要按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)中给出的答案,我发现它非常有用,但我有疑问:
我不明白我从哪里获得@“实体”和@“日期”。它是变量还是id,我在哪里获得它?
if(date)
{
[dict setObject:entry forKey:@“entity”];
[dict setObject:date forKey:@“date”];
[tempArray addObject:dict];
}
给出的月份是MMM格式(JAN,FEB,MAR),作为我的项目范围之一被修复,我对如何通过缩写排序与正常编号相比无能为力那些。
我会非常感激一些帮助,因为我已经坚持了几天!谢谢!
答案 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