无法在 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 类型(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:摆脱 ObjC 遗留问题,例如 if
条件周围的分号和括号。
我一直在尝试在标签中显示从另一个视图控制器中的单元格检索到的值
这是详细视图控制器
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 类型(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:摆脱 ObjC 遗留问题,例如 if
条件周围的分号和括号。