Benachrichtigung in Swift, die UserInfo im Wörterbuch zurückgibt
Ich habe eine Benachrichtigung, dass gibt ein Wörterbuch, ähnlich wie in objective-c, aber ich bin nicht immer die Ergebnisse, die ich erwarte.
Hier ist die Methode, mit der Veröffentlichung der Benachrichtigung. Es ist tatsächlich die Rückgabe der Ergebnisse (date) Datum-picker.
@IBAction func dateOfBirthAction(sender: AnyObject) {
println("Date: \(dateOfBirthPicker.date)")
var selectedDateDictionary = [dateOfBirthPicker.date, "dateOfBirth"]
NSNotificationCenter.defaultCenter().postNotificationName("dateOfBirth", object: nil, userInfo: [NSObject():selectedDateDictionary])
}
Hier ist die Benachrichtigung Beobachter:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "dateOfBirth:", name: "dateOfBirth", object: nil)
}
func dateOfBirth(notification: NSNotification) {
println("userInfo: \(notification.userInfo)")
let returnedDateOfBirth = notification.userInfo!["dateOfBirth"] as NSString
println("returnedDateOfBirth: \(returnedDateOfBirth)")
playerInformationDateOfBirthLabel.text = returnedDateOfBirth
}
Ich bin immer folgende Fehlermeldung in der Zeile let returnedDateOfBirth:String = notification.userInfo["dateOfBirth"]
userInfo: Optional([<NSObject: 0x7fb15a44a880>: <_TtCSs23_ContiguousArrayStorage00007FB15A4D4380 0x7fb15a4206a0>(
2014-09-18 12:07:07 +0000,
dateOfBirth
)
])
fatal error: unexpectedly found nil while unwrapping an Optional value
VOLLSTÄNDIGE LÖSUNG
@IBAction func dateOfBirthAction(sender: AnyObject) {
var selectedDateDictionary = ["birthDate" : dateOfBirthPicker.date]
NSNotificationCenter.defaultCenter().postNotificationName("foundABirthDate", object: nil, userInfo:selectedDateDictionary)
}
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "dateOfBirth:", name: "foundABirthDate", object: nil)
}
func dateOfBirth(notification: NSNotification) {
let playerBirthDate = notification.userInfo!["birthDate"] as NSDate
var dateFormatter: NSDateFormatter = NSDateFormatter()
//Specifies a long style, typically with full text, such as “November 23, 1937”.
dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle
let dateConvertedToString: String = dateFormatter.stringFromDate(playerBirthDate)
playerInformationDateOfBirthLabel.text = dateConvertedToString
}
InformationsquelleAutor der Frage Paul S. | 2014-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
userInfo
Wörterbuch falsch ist.Haben Sie:
Versuchen Sie
userInfo
zuuserInfo: selectedDateDictionary
wie diese:Der Fehler ist Ihnen zu sagen, Sie erwarten ein
String
weilreturnedDateOfBirth:String
aber Sie zurück[NSObject():selectedDateDictionary]
InformationsquelleAutor der Antwort Austen Chongpison
Versuchen Sie es
Nur Wörterbuch weitergeben können, um userInfo
oder
InformationsquelleAutor der Antwort Ramesh