iphone - 创建动态填充NSMutableArrays的NSMutableDictionary

时间:2012-06-13 10:44:05

标签: iphone objective-c ios xcode cocoa-touch

我有一个对象数组。每个对象都有属性“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 ..

我可以通过为所有date组合手动创建 1..n NSMutableArrays并使用object.name值填充它们来实现这一点。但问题是我不知道有多少date组合,所以应该动态完成。此外,date属性可以在不同的对象中重复 我的对象结构是:

Object
 -NSDate - date
 -NSString - title

UPD

我在想是否可以创建NSDictionary,其中键将是我的日期,对象将是NSArray,其中包含关键日期的所有项目。但我不知道如何动态地做到这一点。

我希望我能够清楚地解释我的问题。 提前谢谢!

2 个答案:

答案 0 :(得分: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在此方法之外声明。现在可以同时使用newTitleDictionary和newDateArr来填充tableview。

答案 1 :(得分:0)

如果我理解正确,你想把一个对象放到一个数组中然后用那个数组来填充一个表视图?

每次只需将日期对象添加到NSMutableArray。

[myArray addObject:dateObject];

然后说到填充表视图..

DateObject *newDateObj = [myArray objectAtIndex:index];

我希望这有帮助,我理解你的问题

编辑现在回答我的理解了。

第1步 检查现有的日期数组,看看是否有任何匹配可能是通过使用for循环迭代它。在线搜索如何比较NSDate。

第2步如果匹配任何内容,则将其作为数组插入到数组中,只有该日期,因此数组计数将为1。如果 匹配,则将其与该数组一起插入数组,使数组计数为2或更多。

第3步当声明表的节数时,只返回dateHolderArray计数。

第4步在声明每个部分中的行数时,返回dateHolderArray中数组的数组计数。

第5步在使用信息填充单元格时显示内容。它只是使用部分ID和行ID从数组中获取日期的任务。

我就是这样做的,可能还有很多其他的方法。任何问题只是问