无法在Label.text中强制转换NSString

时间:2016-06-05 14:34:04

标签: swift nsstring nsdictionary

我一直试图在标签中显示从另一个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
        }

从主页

中检索此gg
yield

3 个答案:

答案 0 :(得分:1)

错误与标题中提到的类型转换无关。

如果字典中不存在键SiteName,则强制解包会导致应用程序崩溃。

您必须使用可选绑定或使用nil合并运算符检查密钥。

使用原生Swift类型(StringDictionary)。它使事情变得更容易。

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

应该够了