Die decodeDouble
on NSCoder
gibt einen nicht optionalen Wert zurück, aber ich möchte identifizieren, ob ein Wert Null war, bevor es codiert wurde.NSCoder decodeDoppel des optionalen Werts
Das ist mein Szenario:
var optionalDouble: Double? = nil
func encode(with aCoder: NSCoder) {
if let optionalDouble {
aCoder.encode(optionalDouble, forKey: "myOptionalDouble")
}
}
convenience required init?(coder aDecoder: NSCoder) {
optionalDouble = aDecoder.decodeDouble(forKey: "myOptionalDouble")
// here optionalDouble is never nil anymore
}
So Doppel kehrt Decodierung 0
, falls der Wert nie eingestellt wurde, so ist es, wie ich vor der Codierung
0
oder
nil
, ob ein Wert identifizieren kann nicht scheint
Gibt es eine Möglichkeit für mich zu überprüfen, ob ein Double war, bevor es codiert wurde?
Sie zu machen kann in 'NSNumber?' konvertieren, um mit encodeObject zu speichern und 'decodeObject' anstelle von' decodeDouble' zu verwenden –
Müssen Sie in der Lage sein, zwischen dem Wert, der mit einem Wert von "nil" kodiert wird, und dem für den Schlüssel nicht vorhandenen Wert zu unterscheiden ? – Hamish
Hat [diese Antwort] (http://stackoverflow.com/questions/39891190/how-doi-i-code-a-double-using-nscoder-nsobject-and-swift-3-for-ios/39895068#39895068) nützlich für Ihren Fall? –