Wie man userinfo aus NSNotification in swift 3
Bekam ich diese Fehlermeldung in swift3:
Cannot convert value of type [AnyHashable : Any] to type NSDictionary in coercion.
Mein Code ist:
func downloadProgress(notification:NSNotification){
if let userInfo = notification.userInfo as NSDictionary
{
print(userInfo) //[AnyHashable("progressPercentage"): 0.82530790852915281]
if let progressValue = userInfo["progressPercentage"] as? Float {
if progressValue > 0.01{
}
}
}
}
Den tatsächlichen userInfo Wert ist ["progressPercentage": 0.82530790852915281]
aber seine gedruckten als [AnyHashable("progressPercentage"): 0.82530790852915281]
und nicht die Befriedigung der if
Zustand.
Edit:
Kein Glück für notification.userInfo as? [AnyHashable: Any]
, Aber jetzt arbeitet für notification.userInfo as? [String: AnyObject]
und notification.userInfo as? [String: Any]
- Wie wäre
notification.userInfo as? [String: AnyObject]
? - Warum brauchen Sie, um zu wirken, sowieso?
- casting zu
[String: AnyObject]
funktioniert jetzt - werden Sie gesehen, meine Antwort habe ich deutlich erwähnt der Punkt, wenn Sie wissen, die Art verwenden
[String: Any]
für swift3 , wenn Sie verwendet werden[String: AnyObject]
dies ist für swift2 - yep, die ich verwendet
[String: Any]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Typ converson
verwenden
weitere Informationen finden Sie unter diesem API-Referenz Dokumente
[AnyHashable : Any]
ist nicht hier arbeiten.[String: Any]
und[String: AnyObject]
unterstützen die Typumwandlung jetztPlase verwenden Sie die neue Klasse
Notification
stattNSNotification
.Habe ich nicht meinen Mac mit mir, aber dieses sollte das problem zu beheben.
Diese änderung wird automatisch angewendet, wenn Sie verwenden die integrierte Xcode, Swift-Konvertierungs-Werkzeug.
Notification
oder mitNSNotification
. Es ist alles über type casting[AnyHashable : Any]
konstruieren.