1

オブジェクトの配列があります。各オブジェクトには、プロパティ「date」と「title」があります。UITableView次のような項目をセクションに追加したいと思います。

Section 1 - 2012.06.12 (taken from object.date)
  Cell 1.1: Title 1 (taken from object.name)
  Cell 1.2: Title 2
  Cell 1.3: Title 3
  ...
Section 2 - 2012.06.13
  Cell 2.1: Title 1
  Cell 2.2: Title 2
  ..
Section 3 ..

これを行うには、すべての組み合わせに対して1..n NSMutableArraysを手動で作成し、それらに値を入力します。しかし、問題は、組み合わせがいくつあるかわからないため、動的に実行する必要があることです。また、プロパティはさまざまなオブジェクトで繰り返すことができます。私のオブジェクト構造は次のとおりです。dateobject.namedatedate

Object
 -NSDate - date
 -NSString - title

UPD

キーが私の日付で、オブジェクトがキー日付のすべてのアイテムを含むNSArrayであるNSDictionaryを作成できるかどうかを考えていました。しかし、それを動的に行う方法がわかりません。

私の質問を十分に明確に説明したことを願っています。前もって感謝します!

4

2 に答える 2

2

日付に基づいて配列を作成できます。オブジェクトの配列があるため、次のように、このオブジェクトの配列を反復処理して個別の日付を取得します。

for(int i =0;i<[objectsArr count];i++)
{
   if(![newDateArr containsObject:[objectsArr objectAtIndex:i].date])
   {
      [newDateArr addObject:[objectsArr objectAtIndex:i].date];
   }
   NSMutableArray *newTitleArray = [newTitleDictionary objectForKey:@"[objectsArr objectAtIndex:i].date"];
   if(newTitleArray != nil)
   {
      [newTitleArray addObject:[objectsArr objectAtIndex:i].title];
   }
   else
   {
      newTitleArray = [[[NSMutableArray alloc] init] autorelease];
      [newTitleArray addObject:[objectsArr objectAtIndex:i].title];
   }
   [newTitleDictionary setValue:newTitleArray forKey:@"[objectsArr objectAtIndex:i].date"];
}

ここで、newTitleDictionary と newDateArr はこのメソッドの外部で宣言されます。これで、is newTitleDictionary と newDateArr の両方を使用してテーブルビューにデータを入力できます。

于 2012-06-13T11:12:14.300 に答える
0

私が正しく理解している場合、オブジェクトを配列に入れ、その配列を使用してテーブルビューにデータを入力したいですか?

毎回日付オブジェクトを NSMutableArray に追加するだけです。

[myArray addObject:dateObject];

次に、テーブル ビューの設定について説明します。

DateObject *newDateObj = [myArray objectAtIndex:index];

これが役に立てば幸いです。あなたの質問を理解しました

EDIT今答えるには、もう少し理解しています。

ステップ 1 既存の日付の配列をチェックし、for ループを使用して繰り返し処理することにより、一致するものがあるかどうかを確認します。NSDate の比較方法については、オンラインで検索してください。

ステップ 2いずれにも一致しない場合は、その日付のみを含む配列として配列に挿入し、配列数が 1 になるようにします。一致する場合、その配列と一緒に配列に挿入し、配列のカウントを 2 以上にします。

ステップ 3テーブルのセクション数を宣言する場合は、dateHolderArray カウントを返すだけです。

ステップ 4各セクションの行数を宣言するときは、dateHolderArray 内の配列の配列カウントを返します。

ステップ 5セルに情報を入力する場合は、コンテンツを表示します。セクション ID と行 ID を使用して配列から日付を取得するだけのタスクになります。

これは私が行う方法です。おそらく他の多くの方法があります。ご不明な点がございましたら、お気軽にお問い合わせください

于 2012-06-13T10:54:57.260 に答える