iOS,Swift,致命错误:在展开可选值时意外发现nil

iOS,Swift,致命错误:在展开可选值时意外发现nil,ios,arrays,json,swift,userinfo,Ios,Arrays,Json,Swift,Userinfo,我已经搜索了几个小时了,但找不到问题的解决方案:我正在使用以下php脚本向我的应用程序发送pushnotification:。我用它发送附加信息:“患者”=>“测试”。现在我想提取这些信息并为其设置一个标签。我使用AppDelegate中的此函数执行此操作: func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { //extr

我已经搜索了几个小时了,但找不到问题的解决方案:我正在使用以下php脚本向我的应用程序发送pushnotification:。我用它发送附加信息:
“患者”=>“测试”
。现在我想提取这些信息并为其设置一个标签。我使用AppDelegate中的此函数执行此操作:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
    //extracting the information
    let info = userInfo["aps"] as! Dictionary<String, AnyObject>
    let pat = info["patient"] as! String
    //print(pat) works fine
    //sending the variable to the viewcontroller and triggering the function wich sets the text of the Label
    vc.patientx = pat
    vc.settext(vc.patientx)     
} 
打印变量工作正常,然后将标签设置为var会导致代码崩溃:

致命错误:在展开可选值时意外发现nil

有什么问题?这是我的AppDelegate:和我的Viewcontroller:


我尝试了许多建议的解决方案(许多来自堆栈溢出),如检查标签是否仍然连接或以不同的方式更新标签,但我找不到有效的解决方案。

您的
patientxy
nil吗?您的插座连接了吗?您应该尽可能避免隐式打开选项,没有理由认为patientx应该是一个,您可以将其声明为常规可选(
)。您还应该尝试自己调试,而不是在线查找解决方案,您是否尝试过设置断点来检查变量的值,或者甚至使用
print
语句将变量打印到控制台?您没有在任何地方显示
ViewController
,因此它的视图从未加载,所以textfield是零。从您发布的代码中,我们不太清楚您想做什么,但是假设您在故事板中创建了另一个
ViewController
实例,您需要访问该实例并调用其上的方法。您在应用程序委托中创建的实例是一个单独的实例。Do
var vc=window?.rootViewController as!ViewController
在执行
vc.patientx=pat
之前,删除您的
vc
属性
@IBOutlet var patientxy: UITextField!
var patientx:String!
func settext(name: String)
{
    if patientx != nil {
        //print(patientx) works fine.
    patientxy.text = patientx
    AudioServicesPlaySystemSound(1304)
    AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
    }

}