Wert vom Typ UIViewController kann nicht in PatternDetailViewController umgewandelt werden
Ich versuche, einen Ansichtscontroller auf einen Detailansichtscontroller herunterzuspielen, kann dies jedoch nicht. Ich verwende Core Data (zum ersten Mal). Der Fehler befindet sich in der prepareForSegue-Methode und lautet: "Wert des Typs 'UIViewController' (0x1b81cdc) konnte nicht in 'Patternz.PatternDetailViewController' (0x32488) umgewandelt werden. (, Lldb)"
Würde mich über eine Erklärung freuen, warum es nicht funktioniert. Hier sind die Dateien.
ViewController.swift
import UIKit
import CoreData
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var patterns : [Pattern] = []
var selectedPattern : Pattern? = nil
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tableView.dataSource = self
self.tableView.delegate = self
createTestPatterns()
var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var request = NSFetchRequest(entityName: "Pattern")
var results = context.executeFetchRequest(request, error: nil)
if results != nil {
self.patterns = results! as! [Pattern]
}
}
func createTestPatterns() {
var context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext!
var pattern = NSEntityDescription.insertNewObjectForEntityForName("Pattern", inManagedObjectContext: context) as! Pattern
pattern.name = "Dress Shirt"
pattern.frontimage = UIImageJPEGRepresentation(UIImage(named: "examplePattern.jpg"), 1)
context.save(nil)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.patterns.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = UITableViewCell()
var pattern = self.patterns[indexPath.row]
cell.textLabel!.text = pattern.name
cell.imageView!.image = UIImage(data: pattern.frontimage)
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedPattern = self.patterns[indexPath.row]
self.performSegueWithIdentifier("patternDetailSegue", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "patternDetailSegue" {
var detailViewController = segue.destinationViewController as! PatternDetailViewController // Could not cast value of type 'UIViewController' to 'Patternz.PatternDetailViewController'
detailViewController.pattern = self.selectedPattern
}
}
}
PatternDetailViewController.swift
import UIKit
class PatternDetailViewController: UIViewController {
var pattern : Pattern? = nil
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.navigationItem.title = self.pattern!.name
}
}