尝试仅将某些实体加载到表视图中
Posted
技术标签:
【中文标题】尝试仅将某些实体加载到表视图中【英文标题】:Trying to load only certain entities into a table view 【发布时间】:2012-12-28 05:30:04 【问题描述】:我有一个实体客户的数据模型。客户具有姓名、地址等属性。这些属性之一是回调日期。我只想将回调日期为今天的客户加载到表中。下面是我必须检查日期是否相等然后创建单元格的代码。问题是当日期不相等时,它会跳过单元格的创建。如何跳过该特定客户并转到下一个客户?
if(date==date2 && month==month2 && year==year2)
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSString *string = [NSString stringWithFormat:@"%@ %@", cust.firstName, cust.lastName];
cell.textLabel.text = string;
return cell;
return nil;
【问题讨论】:
在创建单元格时检查条件,即 if ( cell== nil and your condition) 当我这样做时,它会返回一个空白单元格。如何让它不返回一个单元格,所以表格中没有一个空白单元格?if (condition) NSString *string = [NSString stringWithFormat:@"%@ %@", cust.firstName, cust.lastName]; cell.textLabel.text = string; return cell;
试试这个希望会奏效
【参考方案1】:
我会选择完全不同的路线。
与其在单元格中不显示任何内容,不如干脆不提供数据以使单元格存在。您提到您正在使用模型,所以我假设您正在使用核心数据?
如果是这样,那么在获取模型时更改谓词以忽略所有不符合条件的对象。然后,您可以只显示表格中的每个对象,因为您知道没有您不想要的。
或者,获取所有内容(如果您可能没有使用核心数据),然后将谓词应用于您正在使用的数据数组并以这种方式将其过滤掉。
【讨论】:
如何将谓词仅用于日期为今天的客户? 您可以复合您的谓词,这样一个谓词将获取日期大于今天凌晨 0:01 日期且小于今晚 23:59 下午日期的对象。看看 yuji 的this answer,它会更详细地解释它:)以上是关于尝试仅将某些实体加载到表视图中的主要内容,如果未能解决你的问题,请参考以下文章
将文件 url 从 documentDirectory 加载到表视图