致命错误:展开值时出现swift 2.3

致命错误:展开值时出现swift 2.3,swift,wcsession,Swift,Wcsession,我正在尝试使用WCsession methode将保存的字符串发送到apple watch。但是当我这样做时,我在swift 2.3中得到一个错误:致命错误:在展开可选值时意外地发现了nil func Reloadip() { let ip = nsdefauts.object(forKey: saved) let requestValues = ["send" : "A" , "IP" : ip as! String ] print(requestValues

我正在尝试使用WCsession methode将保存的字符串发送到apple watch。但是当我这样做时,我在swift 2.3中得到一个错误:致命错误:在展开可选值时意外地发现了nil

func Reloadip() {


    let ip =  nsdefauts.object(forKey: saved)


    let requestValues = ["send" : "A" , "IP" : ip as! String ]
    print(requestValues)

    if(WCSession.isSupported()){
        session!.sendMessage(requestValues, replyHandler: nil, errorHandler: nil)
        print("sended ip")
    }

}
错误出现在“ip as!字符串行”中。如何修复此错误


关于Quinn,您应该使用更安全的代码

func Reloadip() {

    guard let ip = nsdefauts.objectForKey(saved) as? String else {
        print("there is no saved ip")
        return
    }

    let requestValues = ["send" : "A" , "IP" : ip]
    print(requestValues)

    if(WCSession.isSupported()){
        session?.sendMessage(requestValues, replyHandler: nil, errorHandler: nil)
        print("sended ip")
    }  
}

把它拿走!从“as!String”开始,这是正确的方法,但对于类似的内容,我更喜欢使用保护而不是if。@overactor可能保护更具可读性;我在回答中替换了它。