Xcode 当核心数据中没有要获取的数据[Swift]时,如何隐藏UITableView

Xcode 当核心数据中没有要获取的数据[Swift]时,如何隐藏UITableView,xcode,swift,uitableview,core-data,Xcode,Swift,Uitableview,Core Data,如果尚未设置书签,但“而是”显示带有消息“您尚未为任何内容设置书签”的标签,如何隐藏UITableview。我曾尝试检查核心数据中的数据是否为空,但不幸的是,它不起作用。要检查核心数据库是否为空,您必须对要检查的实体发出NSFetchRequest,并检查请求的结果是否为空 您可以使用此功能进行检查: func entityIsEmpty(entity: String) -> Bool { var appDel:AppDelegate = UIApplication.shared

如果尚未设置书签,但“而是”显示带有消息“您尚未为任何内容设置书签”的标签,如何隐藏UITableview。我曾尝试检查核心数据中的数据是否为空,但不幸的是,它不起作用。

要检查核心数据库是否为空,您必须对要检查的实体发出
NSFetchRequest
,并检查请求的结果是否为空

您可以使用此功能进行检查:

func entityIsEmpty(entity: String) -> Bool
{

    var appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    var context = NSManagedObjectContext()

    var request = NSFetchRequest(entityName: entity)
    var error = NSErrorPointer()

    var results:NSArray? = self.context.executeFetchRequest(request, error: error)

    if let res = results
    {
        if res.count == 0
        {
            return true
        }
        else
        {
            return false
        }
    }
    else
    {
        println("Error: \(error.debugDescription)")
        return true
    }

}

希望这会有所帮助。

最简单的方法是在表视图数据源中处理此问题。如果有0条记录,则使用所需信息显示其他单元格。如果愿意,也可以隐藏表视图并显示标签

numberOfRowsInSection
中,检查0并返回1。(假设没有分区。)

然后,在
cellforrowatinexpath
中,确保显示正确的信息

if fetchedResultsController.fetchedObjects.count == 0 {
   // initialize a different cell
   return cell
}
// configure and return usual cell
if fetchedResultsController.fetchedObjects.count == 0 {
   // initialize a different cell
   return cell
}
// configure and return usual cell
 override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            if fetchedResultsController.fetchedObjects.count == 0 {
            self.tableView.isHidden = true
  }
}