У меня возникла небольшая проблема.В чем разница между Swift 2.3 и 3 при добавлении userInfo в NSNotification?
Предположим, что у меня есть Структура.
struct AlertNotificationObject {
let message: String
}
У меня есть проект в Swift 2.3, где я использую эту структуру поместить в словарь, затем в USERINFO: в NSNotification Observer. Я не мог заставить его работать, поэтому, чтобы исследовать мою проблему, я создал некоторую площадку.
Swift 3.0 версия - работает по назначению.
Обратите внимание, что мне нужно было создать empytClass, чтобы заставить его работать на игровой площадке Swift 3.
class emptyClass{
@objc public func testFunction(){
print ("It should work")
}
}
//MARK: observer //shouldnt bother us now.
let emptyClassRef = emptyClass()
NotificationCenter.default.addObserver(emptyClassRef, selector: #selector(emptyClass.testowFunction), name: NSNotification.Name(rawValue: "test0"), object: nil)
//MARK: post
let messageObject0 = AlertNotificationObject(message: "Test1")
let messageDict0 = [1: messageObject0]
let test0 = NSNotification.init(name: NSNotification.Name(rawValue: "test0"), object: nil, userInfo: messageDict0)
NotificationCenter.default.post(test0 as Notification)
В-приложение Swift 2,3 версия - помимо очевидных изменений синтаксиса, я не мог заставить это работать должным образом - я застрял в Notification проводке.
let messageObject0 = AlertNotificationObject(message: "test")
let messageDict = [1: messageObject0]
let showAlertWithBlur = NSNotification.init(name: "ShowAlertBlur", object: nil, userInfo: messageDict)
NSNotificationCenter.defaultCenter().postNotification(showAlertWithBlur)
И я получил ошибку ... Я хотел бы понять, что случилось здесь, и прежде всего знать, почему он работал в Swift 3. Любые предложения, приветствия.