我试图通过网址发送数据,但是有些数据一直没有价值,因为用户没有更改它,所以我给它空字符串。
如果用户没有更改它,但是当我执行代码时,我会在每个重要行放置断点,并且此行中出现错误"unexpectedly found nil while unwrapping an Optional value"
let postData:NSData = post.data(using: String.Encoding.ascii.rawValue)! as NSData
像这样发帖:
username=myusername&password=&tel=&email=myemail&address=&DOB=choose&cinsiyet=2&changedPass=false
电话,密码和地址没有价值(或者它是空字符串),因为用户没有更改它。
在这种情况下,String的编码会影响或因为所有未更改的文本字段都有"" (空字符串),我确信。
答案 0 :(得分:3)
你强行展开post.data(using:)
的结果。如果转换为Data
失败(例如,如果帖子的编码不是您使用的其他编码),则会返回nil
并使您的代码崩溃。
一般来说,如果你不确定它会成功,我会建议你永远不要使用强制展开(!
)或强制投射as!
。相反,您应该使用guard let
声明:
guard let postData = post.data(using: String.Encoding.ascii) else {
//an error occurred
return
}
此外,在Swift 3中,我们不使用NSData
。请改用Data
。
答案 1 :(得分:0)
我通过将if语句放在一个可能占用3个值的文本字段中来解决这个问题。