如何查看NSFetchedResultsController是否返回任何内容?

时间:2013-06-12 08:15:59

标签: ios objective-c uitableview nsfetchedresultscontroller

我使用NSFetchedResultsController重写我的项目。它几乎可以工作。但是我想要做的事情在流行的代码中很容易,但我不知道在哪里编码。

当我的UITableView的dataSource为空时,我想添加一个带有消息的子视图“要在TableView中添加对象,请按+按钮”。

如果没有要显示的内容或用户删除TableView的所有对象,则此子视图应在启动时出现。

最好的地方是numberOfRowsInSection(我只有一个部分),有些像

id <NSFetchedResultSectionInfo> sectionInfo = [[[self fetchedResultsController] sections] objectAtIndex:section];

if ([sectionInfo numberOfObjects] == 0)
{
AddSubview
} else {
remove subview if needed
}
...

感谢您的帮助。

最好的问候,
雅克

1 个答案:

答案 0 :(得分:0)

假设您有一个名为CoreData的{​​{1}}实体。这些国家/地区的属性为Countries。要检查是否存在类型为countryName的实体,请调用以下方法:

Countries

编辑: 如果您不想要某个- (BOOL)countryExistsWithName:(NSString *)countryName{ NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Countries"]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"countryName == %@, countryName]; [fetchRequest setPredicate:predicate]; NSError *error; NSUInteger count = [self.managedObjectContext countForFetchRequest:fetchRequest error:&error]; if (count == NSNotFound) { // error NSLog(@"error"); return NO; } if (count > 0) { // at least one country found return YES; } return NO; } ,则只需检查所有countryName,即可执行以下抓取:

Countries

使用此方法,您可以轻松确定数据源是否为emty。 希望它有所帮助