Ich versuche, zwei Eigenschaften als Optionals in einer benutzerdefinierten Klasse zu deklarieren - ein String und ein Int.So verschlüsseln Sie Int als eine Option mit NSCoding
Ich tue dies in MyClass:
var myString: String?
var myInt: Int?
ich sie ok dekodieren kann wie folgt dar:
required init?(coder aDecoder: NSCoder) {
myString = aDecoder.decodeObjectForKey("MyString") as? String
myInt = aDecoder.decodeIntegerForKey("MyInt")
}
Aber diese kodieren gibt einen Fehler auf der Linie Int:
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeInteger(myInt, forKey: "MyInt")
aCoder.encodeObject(myString, forKey: "MyString")
}
Der Fehler verschwindet nur, wenn XCode mich dazu auffordert, Int wie folgt auszupacken:
aCoder.encodeInteger(myInt!, forKey: "MyInt")
Aber das führt offensichtlich zu einem Absturz. Meine Frage ist also, wie kann ich den Int so behandeln wie ein optionaler String? Was vermisse ich?
Vielen Dank für die Antwort und Erklärung Sulthan. Ich verwende jetzt myInt = aDecoder.decodeObjectForKey ("MyInt") als? Int und aCoder.encodeObject (myInt, forKey: "MyInt") und es funktioniert gut. – Eatton