0

を使用してURLからXMLファイルを解析しています。解析した項目は、データをロードNSXMLParserする配列に追加されます。UITableView特に、イベントのタイトルとそれらのイベントが行われる日付を解析しています。これらの項目は解析され、と呼ばれる配列に追加されstoriesます。私の目標は、イベントのタイトルをTableViewの各セルのメインテキストにし、日付をサブタイトルにすることです。各イベントのタイトルをフォーマットする必要はありません(つまり、XMLファイルに「EventOne」と表示されている場合は、それが表示されます)。この方法を使用すると、これで成功します。

titleXML内のアイテムのタイトルであり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 )NSMutableStringcurrentDateあります。コンソールを使用すると、XML内のすべての項目に対して望ましい結果が得られることがわかります。私が使用するとき:

cell.textLabel.text = currentDate;

テーブル内のすべてのセルに、XMLファイルの最後の項目の日付が含まれることになります(正しくフォーマットされているように見えます)。私は自分のメソッドを無駄に動かしてみました。私を正しい方向に向けてもかまわない場合は、アイテムのタイトルとアイテムの日付がセルに含まれるように、変数の値をcurrentDateaのサブタイトルテキストに含める方法を知っておく必要があります。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;テーブルビューの特定の行に関連付けられたニュース項目を取得する場合は、より一般的な構文です。

于 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 に答える