【发布时间】:2015-10-08 11:26:26
【问题描述】:
当书签尚未完成时,如何隐藏 UITableview 但“相反”显示一个带有消息“你还没有为任何东西添加书签”的标签。我曾尝试检查核心数据中的数据是否为空,但很遗憾,它不起作用。
【问题讨论】:
标签: xcode swift uitableview core-data
当书签尚未完成时,如何隐藏 UITableview 但“相反”显示一个带有消息“你还没有为任何东西添加书签”的标签。我曾尝试检查核心数据中的数据是否为空,但很遗憾,它不起作用。
【问题讨论】:
标签: xcode swift uitableview core-data
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if fetchedResultsController.fetchedObjects.count == 0 {
self.tableView.isHidden = true
}
}
【讨论】:
要检查核心数据库是否为空,您必须在要检查的实体上创建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。 (假设您没有部分。)
let count = fetchedResultsController.fetchedObjects.count
return count > 0 ?? count : 1
然后,在cellForRowAtIndexPath 中确保显示正确的信息。
if fetchedResultsController.fetchedObjects.count == 0 {
// initialize a different cell
return cell
}
// configure and return usual cell
【讨论】: