0

私は 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!")
    }
}

}

4

1 に答える 1

1

!オプションが欠落している場合、実行時エラーが発生する危険性があるため、オプションを でアンラップすることは常に避ける必要があります。次のことを試してください。

let taskName = task.name ?? "No name"
if task.isimportant{
    cell.textLabel?.text = " ★   \(taskName)"
}else{
    cell.textLabel?.text = taskName
}
于 2016-11-10T13:15:41.297 に答える