无法在 Label.text 中转换 NSString

Cannot cast NSString in Label.text

我一直在尝试在标签中显示从另一个视图控制器中的单元格检索到的值

这是详细视图控制器

var gg = NSDictionary()
    var siteName = NSString()

    override func viewDidLoad() {
        super.viewDidLoad()

        siteName = gg["SiteName"]! as! NSString
        print(siteName)

        self.siteNameDetail.text = siteName as String
    }

打印站名完美出值 但是当为 siteNameDetail.text 进行转换时会给出此错误

fatal error: unexpectedly found nil while unwrapping an Optional value

此 gg 是从母版页中检索到的

if (segue.identifier == "siteSegue"){
            let destview = segue.destinationViewController as! SiteViewController
            destview.gg = sender as! NSDictionary
        }

在声明中

self.siteNameDetail.text = siteName as String;  

self 可能为 nil,self.setNameDetail 可能为 nil,siteName 可能为 nil,siteName as String 可能为 nil。您做了一些假设错误指的是哪一个。你的假设可能是错误的。

为什么要转换为 NSString?

    siteName = gg["SiteName"]! as! String
    self.siteNameDetail.text = siteName

应该够了

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

如果键 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:摆脱 ObjC 遗留问题,例如 if 条件周围的分号和括号。