I'm getting following error in the fourth line of below code...
Thread 1: signal SIGABRT, and the output says Could not cast value of type 'JobTableViewController' (0x10a20cb80) to 'NSString' (0x10cc5a2a8).
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toDetails" {
let detailController = segue.destination as! JobDetailViewController
detailController.valueToPass = sender as! String
}
}
Job.swift:
class Job {
var text: String = ""
let ref: DatabaseReference!
init(text: String) {
self.text = text
ref = Database.database().reference().child("jobs").childByAutoId()
}
init(snapshot: DataSnapshot)
{
ref = snapshot.ref
if let value = snapshot.value as? [String : Any] {
text = value["text"] as! String
}
}
func save() {
ref.setValue(toDictionary())
}
func toDictionary() -> [String : Any]
{
return [
"text" : text,
]
}
}
Your problem is that in performSegue
you send self
( which is of type JobTableViewController
) as sender
parameter like this
self.performSegue(withIdentifier: "toDetails", sender: self)
and here cast it to
sender as! String
so convert it to
self.performSegue(withIdentifier: "toDetails", sender:"sendedStr")