Próbuję zadeklarować dwie właściwości jako opcje w niestandardowej klasie - String i Int.Jak kodować Int jako opcjonalny przy użyciu NSCoding
Robię to w MojaKlasa:
var myString: String?
var myInt: Int?
mogę rozszyfrować ich ok następująco:
required init?(coder aDecoder: NSCoder) {
myString = aDecoder.decodeObjectForKey("MyString") as? String
myInt = aDecoder.decodeIntegerForKey("MyInt")
}
Ale im kodowania daje błąd na linii Int:
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeInteger(myInt, forKey: "MyInt")
aCoder.encodeObject(myString, forKey: "MyString")
}
Błąd zniknie tylko wtedy, gdy XCode poprosi mnie o rozwinięcie Int w następujący sposób:
aCoder.encodeInteger(myInt!, forKey: "MyInt")
Ale to oczywiście powoduje awarię. Moje pytanie brzmi: jak mogę traktować Int jako traktowane jako opcjonalne, takie jak String? czego mi brakuje?
Dziękuję za odpowiedź i wyjaśnienie Sulthan. Używam teraz myInt = aDecoder.decodeObjectForKey ("MyInt") jako? Int i aCoder.encodeObject (myInt, forKey: "MyInt") i działa dobrze. – Eatton