从NSNotification的字符串中删除可选项

时间:2018-04-05 08:19:29

标签: ios string swift4 optional

我从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":{}
}

2 个答案:

答案 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中获取字典对象,你可以按照类似的方法获取字符串值