如何移除从NSNotification获取字符串中的Optional关键字?
解决NSNotification获取字符串时附带Optional关键字的问题
嘿,我懂你现在头疼的点——从NSNotification里拿字符串时,输出总是带着Optional关键字,看着特别别扭对吧?看你的代码里用了debugDescription,这就是问题的根源啦!
debugDescription是用来输出调试信息的工具,它会把变量的类型包装也一并打印出来,所以可选类型的内容就会变成Optional("你的字符串")这种格式。咱们换个思路处理就能轻松解决:
情况1:Notification的object本身就是字符串
直接把object安全转换成String类型并解包,别再用debugDescription了:
func getAlertMsg(notification: NSNotification!){ // 安全解包并转换为String类型 if let strAlert = notification?.object as? String { print(strAlert) Helper.showAsAlert(strMessage: strAlert, VC: self) } }
这样拿到的strAlert就是纯纯的字符串,再也不会带多余的Optional关键字了。
情况2:Notification的object是JSON字典(比如你给出的响应示例)
如果传递的是像{ "status": true, "message": "User created", "user_detail":{} }这样的字典结构,那我们可以先把object转成字典类型,再提取需要的字段:
func getAlertMsg(notification: NSNotification!){ // 先把object转成字典,再提取message字段 if let responseDict = notification?.object as? [String: Any], let message = responseDict["message"] as? String { print(message) Helper.showAsAlert(strMessage: message, VC: self) } }
这样就能直接拿到字典里的message纯字符串,完美解决问题~
内容的提问来源于stack exchange,提问作者priyanshu
相关产品推荐
相关产品推荐

