2016-11-10 4 views
0

Я работаю над TODO-приложением, все было завершено и работало хорошо, но внезапно оно начинает давать ошибку «фатальная ошибка: неожиданно найденный nil при развертывании необязательного значения» .Need Some Guide!Ошибка 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!") 
    } 
} 

}

+0

Единственное, что вы, возможно, не разворачиваете, это 'task.name', вы уверены, что это значение не ноль? Вы можете попробовать добавить точку останова либо в метод getdata(), либо в cellForRow: at: ', чтобы гарантировать, что данные - это то, что вы ожидаете. – Ollie

ответ

1

Вы всегда должны избегать разворачивания УСТРОЙСТВА со ! из-за опасности столкновения ошибки во время выполнения, если опция отсутствует. Попробуйте выполнить следующие действия:

let taskName = task.name ?? "No name" 
if task.isimportant{ 
    cell.textLabel?.text = " ★ \(taskName)" 
}else{ 
    cell.textLabel?.text = taskName 
} 
Смежные вопросы