0

我正在XML从一个 URL 解析一个文件,从中XML我解析事件的标题、它们的日期和事件的位置等等。这些元素缓存在一个名为的数组中,该数组stories充当我的表格视图的数据源。我的目标是显示和索引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收到的格式化日期,旨在引用我的数组中的一个元素。如果可以的话,请指出我实现目标的正确方向,我将不胜感激。谢谢你。NSDateFormattereventstories

4

2 回答 2

0

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

于 2013-01-04T09:26:04.093 回答
0

为此,您必须使用以下步骤: 1. 在表视图的节数方法中写入数组计数。2.您还必须通过比较堆栈溢出时可用的日期来修改您的数组,并根据您的要求排列在数组中。3. 通过给出 title.text = [your array object at index[index path of section]] 来设置标题 4. 现在你可以在其中给出你喜欢的行。

这只是您需要遵循的步骤。您明白我的意思了吗?

于 2013-01-04T09:28:55.157 回答