/ / Problem beim Entpacken der Zeichenfolge von NSUserDefaults - ios, swift, nsuserdefaults

Fehler beim Auspacken der Zeichenfolge aus NSUserDefaults - ios, swift, nsuserdefaults

Ich versuche, einen Wert von NSUserDefaults zu erhalten, und ich versuche, eine Variable als diese zu setzen. Das Problem ist, dass ich nicht sicher bin, wie ich es auspacke?

Das ist mein Code:

    var defaults = NSUserDefaults(suiteName: "group.AffordIt")
currentBudgetCalculation = defaults?.stringForKey("currentBudgetWidget")!

Im Moment bekomme ich nur eine Fehlermeldung in der zweiten Zeile, die besagt:

Value of optional type "String?" not unwrapped; did you mean to use "!" or "?"?

Wenn ich versuche, die vorgeschlagene Lösung zu verwenden, wird nur ein hinzugefügt ! bis zum Ende der Zeile, aber das löst das Problem offensichtlich nicht.

Antworten:

2 für die Antwort № 1

Hast du das versucht?

currentBudgetCalculation = defaults!.stringForKey("currentBudgetWidget")!

2 für die Antwort № 2

Beachten Sie, dass Sie den Operator für erzwungenes Entpacken verwenden ! wird nicht empfohlen, da es einen Laufzeitfehler generiert, wenn dies optional ist nil.

Ein besserer Ansatz ist die Verwendung der optionalen Bindung. Dies macht Ihren Code sicherer und weniger anfällig für Ausnahmen, insbesondere wenn Sie nicht sicher sind, ob eine optionale Variable tatsächlich einen Wert enthält, der nicht Null ist:

var defaults: NSUserDefaults? = NSUserDefaults(suiteName: "group.AffordIt")

if let defaults = defaults {
if let currentBudgetCalculation: String = defaults.stringForKey("currentBudgetWidget") {
// Here you are 100% sure currentBudgetCalculation contains a non nil value
}
}

Im Allgemeinen vermeide ich immer den Zwangstrenner !, es sei denn, ich weise einen nicht-null-Wert von zuMein eigener Code - wenn er auf etwas angewendet wird, das von einer Funktion oder Methode zurückgegeben wird, kann dies zu Kopfschmerzen führen, wenn versucht wird herauszufinden, warum die App aus unbekannten Gründen abstürzt Wenn Anweisungen und erzwungenes Auspacken mit einer Anmerkung:

Versuchen zu verwenden! Beim Zugriff auf einen nicht vorhandenen optionalen Wert wird ein Laufzeitfehler ausgelöst. Vergewissern Sie sich vor der Verwendung immer, dass ein optionales Produkt einen Wert ungleich Null enthält! seinen Wert erzwingen.