2
我有一個數組中的字典,其中包含諸如名稱,圖片和日期等屬性(日期只是來自picker view
的字符串)。用數據填充TableView部分?
我想顯示每週表格視圖並按日排列項目。
我打算做的是每天創建一個新的數組,將所有數據過濾到這些數組中,然後填充這些部分。有沒有更聰明的方法呢?
如果我不先過濾數據,我無法想到另一種方式獲得numberOfRowsInSection
。
我有一個數組中的字典,其中包含諸如名稱,圖片和日期等屬性(日期只是來自picker view
的字符串)。用數據填充TableView部分?
我想顯示每週表格視圖並按日排列項目。
我打算做的是每天創建一個新的數組,將所有數據過濾到這些數組中,然後填充這些部分。有沒有更聰明的方法呢?
如果我不先過濾數據,我無法想到另一種方式獲得numberOfRowsInSection
。
另一種方法是在每次需要返回-tableView:numberOfRowsInSection:
的值時過濾您的字典數組。你會
一些代碼(編譯沒有,未測試)要做到這一點可能看起來像:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSString *day = [self _dayForTableViewSection:section]; // assuming this exists
NSPredicate *filter = [NSPredicate predicateWithBlock:^(id obj, NSDictionary *bindings) {
assert([obj isKindOfClass:[NSDictionary class]]); // array contains dictionaries
return [obj[@"day"] isEqualToString:day]; // assuming key is @"day"
}];
NSArray *matchingDictionaries = [self.allDictionaries filteredArrayUsingPredicate:filter]; // assuming data source is allDictionaries
return matchingDictionaries.count;
}
根據你的代碼是如何頻繁調用-tableView:numberOfRowsInSection:
和您的完整的數據源的大小,這庫侖d招致相當嚴重的表現。您可能會更好地執行您最初的建議:提前過濾數據,並將適當的陣列保持最新,以便在您的表格視圖中使用。 (雖然要記住,過早的優化往往會造成更多的傷害,而不是好的!)
我已經寫了我上面提出的建議,但仍然無法理解。我有7個數據陣列。我怎樣才能使用'(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath'因此每個數組將在一個節? – Segev
這幾乎聽起來像是一個單獨的問題:)但你要做的是使用'indexPath.section'確定使用哪個數組(使用7個),然後使用'indexPath.row'作爲索引該數組。使用您提取的任何對象來填充您的出隊UITableViewCell並將其返回。 – Tim