我有一个UITableView,其中填充了来自核心数据的数据,我现在已经设置了它,以便根据实体中的对象数量调整表的大小。我的问题是我知道这个实体有两个属性。现在tableview有一堆额外的单元格,因为它为实体中的所有内容创建一个,而不仅仅是在特定属性中为每个对象创建一个。所以我想根据属性中的对象数量而不是整个实体来设置numberOfRowsInSection:
。我该怎么做?
我目前的表现如何:
id sectionInfo =
[[_fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
编辑:
这就是我的尝试:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
// id sectionInfo =
// [[_fetchedResultsController sections] objectAtIndex:section];
// return [sectionInfo numberOfObjects];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *context = [self managedObjectContext];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FeedEntity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"imageData != nill"];
NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
id sectionInfo =
[[theFetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
但是这导致了这个错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'An instance of NSFetchedResultsController requires a fetch request with sort descriptors'
答案 0 :(得分:0)
所以你有一个有两个属性的实体。您需要过滤要为tableview显示的对象。我认为您需要使用NSFetchRequest和NSPredicate通过检查对象的属性来过滤对象。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSManagedObjectContext *context = [your context];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"FeedEntity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"imageData = nil"];
request.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"text" ascending:NO]];
NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:context sectionNameKeyPath:nil cacheName:nil];
答案 1 :(得分:0)
好的,这很容易解决。是否每个字符串都会有一个图像?为什么不在yourStringDataArray.length
方法中返回-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
?这样,您将只获得显示数组中字符串总数所需的单元格数量。