使用按日期从XML分析的值对UITableView进行索引和排序

时间:2013-01-04 08:58:43

标签: iphone ios uitableview sorting nsdictionary

我正在从URL解析XML文件,从XML我解析事件的标题,日期和事件的位置等。这些元素缓存在一个名为stories的数组中,该数组充当我的表视图的数据源。我的目标是显示和编制UITableView部分,其中的部分基于我的事件发生的日期(月份中的1月份事件,2月份的事件发生在另一部分,月份名称作为我的部分的标题)。最快发生的事件将在我看来是最重要的,事件的进一步应该在我的列表的底部,我不必担心已经发生的事件。到目前为止,我已经能够在我的UITableView中显示我的事件名称和日期作为字幕,而不是按照它们被解析的顺序排列在我的UITableView中。当我记录stories数组时,我在控制台中查看它:

2013-01-04 00:17:22.332 NumberTwo[72213:c07] the stories array is as follows: (
    {
    additionalDesc = "";
    allday = "Yes.";
    endtime = "11:55 PM";
    isodate = "2013-05-23";
    location = "";
    starttime = "12:00 AM";
    title = "CST Exam Makeups";
},
    {
    additionalDesc = "";
    allday = "No.";
    endtime = "12:00 PM";
    isodate = "2013-06-01";
    location = "";
    starttime = "8:00 AM";
    title = "SAT & Subject Tests";
},)

在数组中有两个元素的例子,我知道我将根据事件发生的月份将stories数组分解为较小的数组,但我不知道该方法是什么看起来像。这是我在viewDidLoad中的尝试。

- (void)viewDidLoad {
[super viewDidLoad];

self.sections = [NSMutableDictionary dictionary];
for (UIEvent *event in stories)
{

    NSDate *dateRepresentingThisDay = tempDate;

    // If we don't yet have an array to hold the events for this day, create one
    NSMutableArray *eventsOnThisDay = [self.sections objectForKey:dateRepresentingThisDay];
    if (eventsOnThisDay == nil) {
        eventsOnThisDay = [NSMutableArray array];

    }

    // Add the event to the list for this day
    [eventsOnThisDay addObject:event];
}

// Create a sorted list of days
NSArray *unsortedDays = [self.sections allKeys];
self.sortedDays = [unsortedDays sortedArrayUsingSelector:@selector(compare:)];

}

我知道行for (UIEvent *event in stories)必须不正确,但我确定应该替换它。 tempDate是我在另一种方法中从NSDateFormatter收到的格式化日期,而event是指我的数组stories中的元素。如果可以,请指出正确的方向来实现我的目标,我将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:0)

您是否可以为上述数据创建一个类,并使用NSDate属性来表示事件的开始日期/时间?如果是这样,您可以使用NSPredicate根据您的开始日期属性对数组进行排序。您可以在link上找到有关NSPredicate的详细信息。

答案 1 :(得分:0)

为此,您必须使用以下步骤: 1.在表视图的节数方法上写入数组计数。 2.您还必须通过比较堆栈溢出时可用的日期并根据您的要求排列数组来修改您的阵列。 3.通过给title.text = [你的数组对象索引[section path of section]]设置标题 4.现在您可以根据需要提供行。

这只是您需要遵循的步骤.. 你有我的意思吗?