0

我正在使用 解析来自 URL 的 XML 文件,我解析的项目被添加到从中加载其数据NSXMLParser的数组中。UITableView除其他事项外,我正在解析这些事件发生的事件和日期的标题。这些项目被解析并添加到一个名为 的数组stories中。我的目标是让事件的标题成为我的 TableView 中每个单元格的主要文本,而日期是副标题。每个事件的标题都不需要格式化(即,如果 XML 文件显示为:“Event One”,那么这就是应该显示的内容)我使用这种方法成功地做到了这一点:

title是 XML 中项目的标题,stories是 TableView 从中加载其数据的数组。)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc]
        initWithStyle:UITableViewCellStyleSubtitle
        reuseIdentifier:MyIdentifier];
    }

    // Set up the cell
    NSUInteger storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
    cell.textLabel.text = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];

    return cell;
}

但是,我确实需要格式化我解析的所有日期,我这样做了,我对完成工作NSDateFormatter后的日期格式感到满意。NSDateFormatter如果我不需要格式化我可以使用的日期:

cell.detailTextLabel.text = [[stories objectAtIndex: storyIndex] objectForKey: @"isodate"];

实现我的目标。一旦NSDateFormatter完成了它的工作,我就有了一个变量 (a NSMutableString) currentDate,用我的格式化日期的字符串值调用,使用控制台我可以看到这会为 XML 中的每个项目产生所需的结果。当我使用:

cell.textLabel.text = currentDate;

最后,我的表格中的每个单元格都有 XML 文件中最后一项的日期(假设它看起来不错,格式正确)。我试过移动我的方法无济于事。如果您不介意将我指向正确的方向,我需要知道如何将变量的值包含在 acurrentDate的字幕文本中UITableView,其中项目的标题和项目在单元格中的日期相互对应。

4

3 回答 3

0

您可以将解析数据存储到具有键值对的NSDictionary中。在这里,您可以使用标题作为键和日期作为值,这样两个数据都将对应每个数据。

于 2013-01-03T07:18:43.747 回答
0

几个想法:

  1. 关于您的日期问题,听起来您将日期存储在一个名为currentDate. 并且鉴于您没有共享该代码,我认为您不是在 中这样做cellForRowAtIndexPath,而是在您的解析器或类似的东西中这样做。不幸的是,这会给表格中的每个单元格提供您解析的最后一行的日期)。你应该要么

    • 直接调用您的日期格式cellForRowAtIndexPath(或者,更好的是,调用一个进行日期格式设置的方法),特别是抓取[[stories objectAtIndex: storyIndex] objectForKey: @"isodate"],格式化并detailTextLabel.text相应地设置;或者

    • 与其将格式化日期存储在单个currentDate变量中,不如为格式化日期添加一个字典键,并将其与您从 XML 解析的所有其他内容一起存储在可变字典中(例如,读入isodate、格式化字符串并将其保存回同一个字典使用唯一的密钥,也许formattedDate)。

  2. NSUInteger storyIndex = indexPath.row;如果您要获取与 tableview 的给定行关联的新闻项,则这是一种更常见的语法。

于 2013-01-03T07:37:59.983 回答
0

问题是线

NSUInteger storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];

你应该使用 indexPath.row 代替,

cell.textLabel.text = [[stories objectAtIndex: indexPath.row] objectForKey: @"title"];
于 2013-01-03T07:44:56.040 回答