运行时出现零错误
Posted
技术标签:
【中文标题】运行时出现零错误【英文标题】:Nil Error While Running 【发布时间】:2016-11-10 11:15:36 【问题描述】:我正在开发 TODO 应用程序,它已全部完成并且运行良好,但突然开始出现错误“致命错误:在展开可选值时意外发现 nil”。需要一些指南!
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
@IBOutlet weak var tableView: UITableView!
var tasks : [Task] = [ ]
override func viewDidLoad()
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
// Do any additional setup after loading the view, typically from a nib.
override func viewWillAppear(_ animated: Bool)
getdata()
tableView.reloadData()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return tasks.count
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = UITableViewCell()
let task = tasks[indexPath.row]
if task.isimportant
cell.textLabel?.text = " ★ \(task.name!)"
else
cell.textLabel?.text = task.name!
return cell
func getdata()
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do
tasks = try context.fetch(Task.fetchRequest())
catch
print ("Failed!")
【问题讨论】:
您似乎要解包的唯一可选参数是task.name
,您确定这个值不是零吗?您可以尝试在getdata()
方法或cellForRow:at:
中添加断点,以确保数据符合您的预期。
【参考方案1】:
您应该始终避免使用!
解包可选项,因为如果缺少可选项,可能会遇到运行时错误。请尝试以下操作:
let taskName = task.name ?? "No name"
if task.isimportant
cell.textLabel?.text = " ★ \(taskName)"
else
cell.textLabel?.text = taskName
【讨论】:
以上是关于运行时出现零错误的主要内容,如果未能解决你的问题,请参考以下文章