Ich verwende Xcode8 Beta mit Swift 3.0. Ich habe versucht, eine einfache Objektbasis auf NSObject zu kodieren, aber ich kann Int oder NSInteger nicht decodieren. (Der Codierungsprozess ist OK)Fehler beim Decodieren von Int mit NSCoder in Swift
Codes
class Model : NSObject, NSCoding {
var seq: NSNumber?
var seq2: Int? // problem with seq2, NSInteger is not ok, either
var id: String?
var value: String?
override init() {
super.init()
}
required init?(coder aDecoder: NSCoder){
self.seq = aDecoder.decodeObject(forKey: "seq") as? NSNumber
self.seq2 = aDecoder.decodeInteger(forKey: "seq2")
self.id = aDecoder.decodeObject(forKey: "id") as? String
self.value = aDecoder.decodeObject(forKey: "value") as? String
}
func encode(with aCoder: NSCoder){
aCoder.encode(seq, forKey: "seq")
aCoder.encode(seq2, forKey: "seq2")
aCoder.encode(id, forKey: "id")
aCoder.encode(value, forKey: "value")
}
}
Was ist der sichere Weg, um Werte in Swift 3 zu dekodieren? Zum Beispiel, um sich gegen das Szenario zu schützen, in dem Sie 'decodeInteger' und' seq2' verwenden, ist keine Ganzzahl. Dies wurde in Swift 2 behandelt, indem eine 'let'-Anweisung für' decodeObject' verwendet wurde, aber 'decodeInteger' gibt keine optionale zurück. – Crashalot