RoccoBerry RoccoBerry - 4 months ago 426
iOS Question

NotificationCenter issue on Swift 3

I'm learning Swift 3 and I'm trying to using

NSNotificationCenter
. Here is my code:

func savePost(){
let postData = NSKeyedArchiver.archivedData(withRootObject: _loadedpost)
UserDefaults.standard().object(forKey: KEY_POST)
}
func loadPost(){
if let postData = UserDefaults.standard().object(forKey: KEY_POST) as? NSData{
if let postArray = NSKeyedUnarchiver.unarchiveObject(with: postData as Data) as? [Post]{
_loadedpost = postArray
}
}
//codeerror
NotificationCenter.default().post(NSNotification(name: "loadedPost" as NSNotification.Name, object: nil) as Notification)
}


and this is the observer:

override func viewDidLoad() {
super.viewDidLoad()
//codeerorr
NotificationCenter.default().addObserver(self, selector: Selector(("onPostLoaded")), name: "loadedPost", object: nil)
}

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}


It always gives me the error "signal SIGBRT". When I try to change the name in the observer, it's not an error, but obviously it didn't show anything. How do I fix this?

Answer

Use Like:

NSNotificationCenter.defaultCenter().postNotificationName("YourNotificationName", object: nil)

and AddObserver Like:

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(yourClassName.methodName), name: "YourNotificationName", object: nil)
Comments