我一直试图在标签中显示从另一个View Controller中的单元格中检索到的值
这是详细的视图控制器
fatal error: unexpectedly found nil while unwrapping an Optional value
打印网站名称可以完美地显示该值 但是当为siteNameDetail.text进行强制转换时会出现此错误
if (segue.identifier == "siteSegue"){
let destview = segue.destinationViewController as! SiteViewController
destview.gg = sender as! NSDictionary
}
从主页
中检索此ggyield
答案 0 :(得分:1)
错误与标题中提到的类型转换无关。
如果字典中不存在键SiteName
,则强制解包会导致应用程序崩溃。
您必须使用可选绑定或使用nil合并运算符检查密钥。
使用原生Swift类型(String
,Dictionary
)。它使事情变得更容易。
var gg = [String:AnyObject]()
var siteName = ""
override func viewDidLoad() {
super.viewDidLoad()
siteName = gg["SiteName"] as? String ?? ""
print(siteName)
self.siteNameDetail.text = siteName
}
PS:在if
条件下摆脱像分号和括号一样的ObjC遗产。
答案 1 :(得分:0)
声明
self.siteNameDetail.text = siteName as String;
self可能为nil,self.setNameDetail可能为nil,siteName可能为nil,siteName为String可能为nil。你做了一些错误所指的假设。你的假设可能是错的。
答案 2 :(得分:0)
为什么要将其转换为NSString?
siteName = gg["SiteName"]! as! String
self.siteNameDetail.text = siteName
应该够了