当前位置: 首页 > 面试题库 >

无法将类型UIViewController的值转换为PatternDetailViewController

云何平
2023-03-14
问题内容

我试图将视图控制器转换为详细视图控制器,但不能。我正在使用Core
Data(第一次)。错误发生在prepareForSegue方法中,显示为:“无法将类型’UIViewController’(0x1b81cdc)的值强制转换为’Patternz.PatternDetailViewController’(0x32488)。(lldb)”

希望能解释为什么它不起作用。这是文件。

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
    }



}

问题答案:

正如您所说,问题在于以下几行:

if segue.identifier == "patternDetailSegue" {
    var detailViewController = segue.destinationViewController as! PatternDetailViewController 
    // Could not cast value of type 'UIViewController' to 'Patternz.PatternDetailViewController'

错误消息告诉您,destinationViewController此设置的实际上 不是
PatternDetailViewController。您可能会认为是,但事实并非如此。你需要检查这个赛格瑞的故事板,看看什么是 真正的 在它的目的端。

错误消息将其描述为UIViewController的事实使我怀疑您忘记在情节提要中的此视图控制器的身份检查器中输入任何视图控制器类型:

Xcode屏幕截图



 类似资料:
  • 问题内容: 我在SO的某处找到了此字符串扩展名,它使我可以将html代码转换为属性字符串: 在Swift 3中工作正常,但在Swift 4中,Xcode抱怨: 无法将类型“ NSAttributedString.DocumentAttributeKey”的值转换为预期的字典密钥类型“ NSAttributedString.DocumentReadingOptionKey” 我该如何解决? 问题答案

  • 问题内容: 我有一个JSON文件,其中包含2个JSON数组:一个用于路线的数组,一个用于景点的数组。 一条路线应由用户导航到的多个景点组成。不幸的是我遇到了错误: JSONException:无法将类型为java.lang.String的值转换为JSONObject 这是我的变量和解析JSON文件的代码: Log.i(“ JSON Parser”,json); 告诉我在生成的字符串的开头有一个奇怪

  • 这是控制器代码部分: 我收到这条消息: 出现错误(类型=错误请求,状态=400)。无法将类型[java.lang.String]的值转换为所需类型[java.util.Date];嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“Wed Jun 08 00:00:00 WET 2016”从类型[java.lan

  • 我有两个实体,它们使用一个主键互相引用,主键是一个实体的整数。我不确定我做这件事的方式是否正确。 下面是引用主键id为int的实体 下面是我们从上面的实体中将外键设置为Kmichango kandaMchango的实体。 这里是表单的一部分,我在这里提交了用户在jumuiya_michango_form.html中提供的数据 下面是我的控制器中用于链接到表单和发布数据的两个方法 在我提交表单后,我

  • 问题内容: 这是我的代码的一部分: 这是Tumblr API的JSON的一部分: 等等。 这是我的错误: 在这行上: 我不明白为什么。我对JSON和iOS还是很陌生,但是“响应”对我来说就像字典,我不知道为什么它是NSArray,我也不知道如何解决这个问题。任何帮助将不胜感激。 这不是重复的,因为其他帖子没有帮助我解决此问题。 问题答案: 错误消息说 无法将 实际 类型NSDictionary强制