我从NSNotification获取了一个字符串,但是面对使用给定字符串附加的可选关键字问题,想要从字符串中删除OPTIONAL关键字,这是我的代码:
func getAlertMsg(notification:NSNotification!){
if let strAlert = notification?.object.debugDescription{
print(strAlert)
Helper .showAsAlert(strMessage: strAlert, VC: self)
}
}
响应
{
"status": true,
"message": "User created",
"user_detail":{}
}
答案 0 :(得分:-1)
对于您当前的代码。它应该是:
func getAlertMsg(notification: NSNotification) {
if let string = notification.object as? String {
Helper.showAsAlert(strMessage: string, VC: self)
}
}
此外,您的通知帖应为:
let strMessage = responseVal.value(forKey: "message") as? String
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "RegAlertMsg"),
object: strMessage)
刚刚通过strMessage
。不要爆炸(!)它,否则当responseVal.value(forKey: "message") as? String
失败时你的应用程序会崩溃。
答案 1 :(得分:-3)
我从这样的通知中访问了对象:
@objc func updateActivityDetailWithUserEvent(notification:NSNotification){ //做点什么
print("notification obj is ",notification)
let activityData:[String: ActivityFeed] = notification.object as! [String: ActivityFeed]
activityObj = activityData ["activityUpdated"]!
DispatchQueue.main.async {
//Update UI From Main Thread
self.setUpdatedCell()
}
}
//发布通知并将字典作为参数传递的方式:
从您希望使用字典参数发布通知的方法中调用它:
让activityData:[String:ActivityFeed] = [" activityUpdated":activityFeedObj]
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "activityUpdated"), object: activityData)
这里我从生成NSNotification时通过的Notification中获取字典对象,你可以按照类似的方法获取字符串值