2012-06-13 61 views
1

我有一個對象數組。每個對象都有屬性「日期」和「標題」。 我想填充切片UITableView與那些項目,如:iphone - 創建NSMutableDictionary動態填充NSMutableArrays

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..1 NSMutableArrays所有date組合和與object.name值填充。但問題是我不知道有多少date組合,所以它應該動態完成。此外,date屬性可以在不同的對象重複 我對象的結構是:

Object 
-NSDate - date 
-NSString - title 

UPD

我就在想,如果有可能創建的NSDictionary,其中關鍵的是我的日期該對象將是NSArray,其中包含我的所有項目的關鍵日期。但我不知道如何動態地做到這一點。

我希望我能夠清楚地解釋我的問題。 提前謝謝!

+0

你的每個對象都包含3個標題?你能顯示你的對象結構嗎? –

+0

從哪裏開始約會? –

+0

我已更新我的問題。每個對象只有一個標題。示例中的標題取自不同的對象 – Oleg

回答

2

您可以創建基於date.You有對象的數組,所以通過這個數組對象的迭代,以獲得不同的日期陣列,具體如下:

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。

+0

好主意!我以同樣的方式做到了,而且很有效!謝謝! – Oleg

+0

我很高興你的問題解決了。 –

0

如果我正確地理解了你,你想把一個對象放到一個數組中,然後使用該數組來填充一個表視圖?

只需每次將該日期對象添加到NSMutableArray。

[myArray addObject:dateObject]; 

然後當它涉及到填充表視圖..

DateObject *newDateObj = [myArray objectAtIndex:index]; 

我希望這有助於我理解你的問題

編輯到現在我瞭解多了一些回答。

第1步 檢查現有的日期數組,並查看是否有任何匹配可能通過使用for循環遍歷它。在線搜索如何比較NSDate。

步驟2如果匹配任何那麼它只有在它自己的那個日期插入到數組的數組,因此數組數將是一個。如果確實與匹配,那麼將它插入到數組中,並使數組數爲2或更多。

第3步說到聲明段的表量只是返回dateHolderArray計數。

第4步當聲明每個節中的行數時,返回dateHolderArray內數組的數組數。

第5步顯示內容時填充信息的單元格。它變成了使用段ID和行ID獲取數組日期的任務。

這就是我會這樣做的,也許有很多其他的方法。任何問題,只是問

+0

我不能這樣做,因爲可能有重複日期 – Oleg

+0

因此您想要檢查日期是否與數組中的另一個日期相同,如果是這樣,可以將其添加到新數組所以他們被分組在一個日期? – StuStirling

+0

是的!並創建一個新的記錄,如果日期不一樣 – Oleg