2013-08-04 139 views
0

我有一個表格,其中包含項目名稱和日期。然後我有另一個表,我需要添加所有的對象與他們加入到這從表中的某個日期。例如,我想從該表中取出日期爲03/08/13的所有對象,並將它們添加到另一個數組中。這是甚至可能的唯一的方法,我能想到的是有一個類似的方法來搜索欄過濾方法。任何幫助將不勝感激。 上面的表格有兩個單獨的標籤NSMutableArrays,所以我需要有兩個濾鏡陣列,我認爲。無搜索欄過濾表格數據

enter image description here

+0

請問您打算如何使用創建的新陣列進行操作?關於你如何存儲你的數據,你可能不需要兩個數組(每個標籤爲1)。 1的做法是創建一個「NSDictionary」對象並將數據分配給與您的單元格的不同元素對應的鍵。這樣,您只有一個對象可以關聯到任何給定的單元格。讓我知道你是否感興趣,我可以在適當的答案中詳細說明。 – Yazid

+0

它基本上是一個任務應用程序,所以我想在主視圖控制器上創建一個數組以顯示當天所有的任務?我沒有考慮使用NSDictionary的標籤將有助於過濾? –

+0

在我看來,它會讓它變得更簡單,因爲你只需要過濾1個數組而不是2個。我將提交一個包含細節的答案。 – Yazid

回答

0

您不需要使用2個數組:每個標籤1個。相反,您可以使用NSDictionary對象並將數據分配給與您的單元格的不同元素對應的鍵。在此之後,做你的日期過濾,可以做到以下幾點:

// Create current calendar 
NSCalendar *calendar = [NSCalendar currentCalendar]; 

// Setup date components from date 
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 

// Set date components 
[dateComponents setHour:0]; 
[dateComponents setMinute:0]; 
[dateComponents setSecond:0]; 
NSDate *startOfDate = [calendar dateFromComponents:dateComponents]; 
[dateComponents setHour:23]; 
[dateComponents setMinute:59]; 
[dateComponents setSecond:59]; 
NSDate *endOfDate = [calendar dateFromComponents:dateComponents]; 

// Create predicate to filter your date 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(cellDate > %@) AND (cellDate < %@)",startOfDate, endOfDate]; 

NSArray *filteredArray = [[NSArray alloc] initWithArray:[tableData filteredArrayUsingPredicate:predicate]]; 

你應該確保你你的日期存儲爲每個NSDictionary對象NSDate的。此外,您需要使用上述所有設置的原因是因爲如果您僅使用了一個@"cellDate == @filterDate"謂詞,由於時間因素它將不起作用(除非您碰巧知道和/或明確指定了日期的確切時間保存)。

+0

完美謝謝:)填充表的NSDictionary方法更加有效 –

0

具有兩個單獨的陣列是最好的解決辦法。如果你使用核心數據,你可以簡單地設置一個篩選謂詞NSFetchedResultsController;否則,您可以簡單地將未過濾的數組中的對象添加到已過濾的數組中。讓我知道你會使用哪種方法,以及是否有任何問題。