出于某种原因,当达到performSegueWithIdentifier行时,我收到此错误。
我有这段代码:
if let storedAPIKeychain: AnyObject = dictionary.objectForKey("api_key") {
println(storedAPIKeychain)
//This is the line that causes the problems.
performSegueWithIdentifier("skipBrandSegue", sender: self)
}
println()正常工作并输出正确的信息。
我正在尝试将 storedAPIKeychain 与segue一起传递:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if segue.identifier == "skipBrandSegue" {
// Create a new variable to store the instance of the next view controller
let destinationVC = segue.destinationViewController as brandsViewController
destinationVC.storedAPIKey = storedAPIKeychain!
}
}
我认为可能是问题所在。但是,当我将该行更改为:
destinationVC.storedAPIKey = "someAPIplaceholder"
我也得到了同样的错误。
有人可以告诉我这个错误是什么以及如何解决它。谢谢。
编辑:错误的屏幕截图:
答案 0 :(得分:4)
动态强制转换类无条件表示强制转换失败,因为变量无法转换为其他类型。
在你的代码中,我只看到一行演员:
let destinationVC = segue.destinationViewController as brandsViewController
表示目标视图控制器不是brandsViewController
的实例。
解决问题:
brandsViewController
如果以上都不能解决问题,请在该行设置断点并检查目标视图控制器的实际类型。
附注:按照惯例,在swift中,所有类型名称都以大写字母开头,而函数,变量和属性以小写字母开头。如果您想让其他快速开发人员可以阅读您的代码,我建议您坚持使用该约定(将brandsViewController
重命名为BrandsViewController
)
答案 1 :(得分:4)
@antonios的回答应该可以解决你的问题。中断是由于对象未被强制转换(找到并分配)。
只是旁注:你会对这一行有一些问题:
if let storedAPIKeychain: AnyObject = dictionary.objectForKey("api_key")
特别是如果您希望从中获取String并在ViewControllers之间传递它?
将其转换为String,创建一个全局范围变量,然后将其分配给要使用的变量 - 这样会更容易处理。
var globalVariable = "" //add this line at the top, just before your class declaration.
if let storedAPIKeychain = dictionary.objectForKey("api_key") as? String {
self.globalVariable = storedAPIKeychain
}