我在 IB 中有一个原型 tableview,它有两种不同的单元格:一个完整的单元格和一个基本单元格(用于显示文章,我根据文章的类型使用每一个)。
我想将 FetchedResultsController 集成到我的应用程序中,这样我就可以使用 CoreData 来填充表格视图,但之前(使用 NSArray 而不是 FetchedResultsController)我按如下方式处理了单元设置:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int row = indexPath.row;
static NSString *CellIdentifier = nil;
Article *article = self.articles[row];
// Checks if user simply added a body of text (not from a source or URL)
if (article.isUserAddedText) {
CellIdentifier = @"BasicArticleCell";
}
else {
CellIdentifier = @"FullArticleCell";
}
ArticleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// If the user simply added a body of text, only articlePreview and progress has to be set
cell.articlePreview.text = article.preview;
cell.articleProgress.text = [self calculateTimeLeft:article];
// If it's from a URL or a source, set title and URL
if (!article.isUserAddedText) {
cell.articleTitle.text = article.title;
cell.articleURL.text = article.URL;
}
return cell;
}
但是现在我不知道如何检查它是否是基本文章(就像我之前检查过 NSArray 中 Article 对象的属性一样)。我看到的一篇文章是这样做的:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Set up the cell...
[self configureCell:cell atIndexPath:indexPath];
return cell;
}
但是在我决定单元格标识符是什么之前,我需要知道它是什么类型的文章,所以我不知道我该怎么做。我是否能够及早获取 FetchedResultController 对象,查询它以查看 article 属性的值(无论它是否是基本的)并相应地设置 CellIdentifier?或者还有什么我应该做的吗?
TL;DR:当使用 FetchedResultsController 时,如何根据单元格中显示的对象类型来决定 CellIdentifier。